[목차]
1. SQL 집계함수: COUNT, MAX, MIN, SUM, AVG
2. SQL 그룹화: GROUP BY와 HAVING

1. SQL 집계함수
SQL 의 집계함수는 여러 행 또는 열로부터 하나의 결과값을 반환!!!
✔️ 집계함수는 select 문에서 사용
| COUNT | 테이블의 행 수를 반환 |
| SUM | 테이블의 열 합계를 반환 |
| AVG | 테이블의 열 평균값을 반환 |
| MIN | 테이블의 열 최소값을 반환 |
| MAX | 테이블의 열 최대값을 반환 |
💡 예시
# 여러 집계 함수 사용하기(종합)
select count(*) as cnt, -- 전체 행 수
avg(나이) as avg_age, -- 평균 나이
max(나이) as max_age, -- 가장 많은 나이
min(나이) as min_age, -- 가장 적은 나이
sum(나이) as sum_age -- 나이 총합
from basic.theglory;
💡 잘못된 예시
# 에러 발생
select *,
sum(나이) as sum_age
from basic.theglory;
📌 select * : 모든 행을 그대로 보여줘 ~
📌 sum(나이) : 전체 행의 나이를 합쳐서 1개의 결과만 보여줘~ 의 구조 충돌로 에러 발생
✔️ 그렇다면 이를 해결하려면? 이라기 보단 이와 같은 문제가 생기지 않으려면!!
SELECT 직업, SUM(나이) AS sum_age
FROM basic.theglory
GROUP BY 직업;
하나의 컬럼을 지정하여 group by 로 그룹화를 해야 한다. (집계함수만 쓸 때에는 group by 안해도됨)
2. SQL 그룹화 : group by 와 having
✅ group by
✔️ 특정 컬럼을 기준으로 데이터를 요약해서 비교하고 싶을 때 주로 사용
SELECT
기준컬럼, -- ✅ 예를들어, 성별을 기준으로 / 나이 그룹대를 기준으로 그룹화 등,,,
집계함수1(조건컬럼) AS 별칭1,그룹화
집계함수2(조건컬럼) AS 별칭2
FROM 테이블명
WHERE 조건 -- 선택적으로 사용 가능
GROUP BY 기준컬럼;
- FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY
- GROUP BY는 SQL 실행 순서상 WHERE 다음, SELECT보다 먼저 실행됩니다.
- 따라서 데이터를 그룹화한 뒤 SELECT가 실행되기 때문에, SELECT 절에는 그룹 기준 컬럼이나 집계 함수로 계산된 값만 쓸 수 있습니다.
- 그룹 기준에 포함되지 않은 일반 컬럼을 그냥 쓰면, 그 값이 어느 그룹의 데이터인지 명확하지 않아서 에러가 발생합니다.
✅ having ( != where 주의 )
✔️ Having 은 group by 에 의한 결과를 필터링 할 때 사용
| WHERE | GROUP BY 전 | 원본 데이터에서 조건을 걸어 미리 필터링 |
| HAVING | GROUP BY 후 | 집계가 끝난 그룹 결과에 조건을 걸어 필터링 |
💡 예시
SELECT
성별, -- 기준컬럼
AVG(나이) AS avg_age
FROM basic.theglory
WHERE 나이 >= 31 -- 원본 데이터에서 31세 이상만 필터링
GROUP BY 성별 -- 성별 기준으로 그룹화
HAVING AVG(나이) > 41; -- 그룹화된 결과 중 평균 나이가 41 초과인 그룹만
3. 오늘의 회고
조건을 주는 where 와 having 의 차이를 오늘에서야 명확히 이해할 수 있었다.
오늘 세션에서 서브쿼리 구문도 배웠는데,
스스로 복습해 보고 과제도 진행해 본 후에 내일 정리를 해볼 예정이다.
끝.
'내일배움캠프' 카테고리의 다른 글
| [SQL] SUB QUERY 구문 복습 + 과제 5번 문제풀이 (3) | 2025.08.13 |
|---|---|
| [내일배움캠프] '25.08.11(월) / 2주차(1) - SOLVE SQL 난이도1 풀이 (2) | 2025.08.11 |
| [내일배움캠프] '25.08.08(금) / 1주차(5) - 직무조사 발표 + SQL 문제 + 라이브 세션 (6) | 2025.08.08 |