SQLD 2-1-5 GROUP BY와 HAVING

김희영·2026년 1월 20일

SQLD

목록 보기
16/27

GROUP BY와 HAVING

GROUP BY

  • 데이터를 묶어서 그룹의 통계 얻을 때 사용
SELECT user_level, COUNT(*) 인원수
FROM USER
GROUP BY user_level

-> 레벨 별로 사용자를 묶어서 각 레벨 별 인원수를 구한다.
이때, 그룹화되지 않은 컬럼은 사용 불가.
(예: 저 상태에서 사용자별 코인 수 조회는 불가. 단, AVG 같이 집계함수를 사용하면 가능)

즉, GROUP BY로 묶고, 집계함수 쓰는것.

HAVING

  • 그룹화된 결과에 조건 적용
SELECT user_level, COUNT(*) AS 인원수
FROM USER
GROUP BY user_level
HAVING COUNT(*) >= 10;

-> 레벨별 인원수가 10명 이상인 레벨만 조회

구분GROUP BYHAVING
역할행(row)을 그룹으로 묶음그룹화된 결과를 필터링
적용 대상개별 행그룹 결과
실행 순서WHERE 다음GROUP BY 다음
사용 목적집계 기준 생성집계 결과 조건 지정
사용 가능한 컬럼SELECT에 사용하는 비집계 컬럼GROUP BY 컬럼 또는 집계 함수
집계 함수 사용가능가능
그룹화 안 된 컬럼 사용❌ 불가❌ 불가
WHERE 사용 가능 여부❌ (동시에 사용 불가)❌ (동시에 사용 불가)
AS 사용 가능 여부

DUAL 테이블

  • 오라클에서 제공하는, 테이블이 필요 없는 상황에서 SELECT를 쓰기 위해 존재하는 더미 테이블
    -> 이걸 FROM에 넣어서 단순 계산 가능!
profile
내는 반드시 개발자가 되고 말것어

0개의 댓글