집계 함수는 행의 집합으로부터 단일 값을 계산합니다 — COUNT, SUM, AVG, MIN, MAX. 데이터를 요약(합계, 평균, 개수)하는 데 필수적이며, 특히 와 결합할 때 유용합니다.
집계 함수는 행의 집합으로부터 단일 값을 계산합니다 — COUNT, SUM, AVG, MIN, MAX. 데이터를 요약(합계, 평균, 개수)하는 데 필수적이며, 특히 와 결합할 때 유용합니다.
GROUP BYSELECT
COUNT(*) AS total_rows, -- 모든 행 개수
COUNT(email) AS rows_with_email, -- NULL이 아닌 email 개수 (NULL 무시!)
SUM(amount) AS total_amount, -- 컬럼의 합
AVG(price) AS average_price, -- 평균
MIN(price) AS lowest, -- 최솟값
MAX(price) AS highest -- 최댓값
FROM orders;
각 함수는 여러 행을 하나의 값으로 줄입니다. SUM/AVG는 숫자에, MIN/MAX는 숫자, 날짜, 텍스트에, COUNT는 무엇에든 동작합니다.
COUNT(*) -- 모든 행 개수 (NULL 포함)
COUNT(email) -- email이 NULL이 아닌 행만 개수
COUNT(DISTINCT country) -- NULL이 아닌 유일한 값 개수
**COUNT(*)**는 모든 행을 세지만, **COUNT(컬럼)**은 그 컬럼이 NULL이 아닌 행만 셉니다 — 미묘하지만 중요한 차이입니다. COUNT(DISTINCT col)은 유일한 값을 셉니다.
-- 전체 테이블이 아니라 그룹별로 집계
SELECT country, COUNT(*) AS users, AVG(age) AS avg_age
FROM users
GROUP BY country; -- country당 결과 행 하나
-- → 각 country별로: user 수와 평균 나이
GROUP BY 없이는 집계가 전체 결과를 한 행으로 요약합니다. GROUP BY가 있으면 그룹마다 요약 행을 하나씩 생성합니다 — 전형적이고 강력한 활용입니다.
-- ❌ 오류 — 집계와 그룹화되지 않은 컬럼을 섞을 수 없음
SELECT name, COUNT(*) FROM users; -- 어느 name? 모호함
-- ✅ 그것으로 그룹화하거나, 집계만 선택할 것
SELECT country, COUNT(*) FROM users GROUP BY country;
집계 함수는 데이터를 요약하고 분석하는 데 필수적입니다. 합계, 평균, 개수, 극값 계산은 리포팅, 분석, 대시보드, 애플리케이션 로직에서 끊임없이 필요하므로, 이해하는 것은 기본적인 SQL 지식입니다.
주요 함수(COUNT, SUM, AVG, MIN, MAX)와 이들이 행의 집합을 단일 값으로 줄이는 방식을 아는 것은 모든 데이터 요약에 필요합니다.
중요하고 자주 오해되는 세부 사항은 COUNT(*) vs COUNT(컬럼) 차이입니다(COUNT(*)는 모든 행을, COUNT(컬럼)은 NULL이 아닌 값만 세어 다르고 놀라운 결과를 줄 수 있음). 그리고 유일한 값을 세는 COUNT(DISTINCT)도 있습니다.
가장 강력하게는, 집계가 **GROUP BY**와 결합되어 그룹별 요약(범주별 개수/평균)을 만듭니다 — 분석 쿼리의 기초입니다.
집계와 그룹화되지 않은 컬럼을 섞을 수 없다는 함정(흔한 오류)을 이해하는 것도 중요합니다.
데이터 요약은 보편적인 데이터베이스 작업이고(모든 리포트, 대시보드, 분석 쿼리가 집계를 사용), 함수, COUNT의 미묘함, 특히 GROUP BY와의 결합을 이해하는 것이 SQL 데이터 분석의 기초이므로, 집계 함수를 숙달하는 것은 데이터 작업에 필수적인 핵심적이고 자주 적용되는 지식입니다 — 기본 조회와, SQL을 리포팅 및 인사이트에 가치 있게 만드는 분석적·요약적 능력을 잇는 다리입니다.