본문 바로가기
GA 및 data/SQL

[SQL] 그룹함수

by 오구송이 2024. 11. 24.

반응형

함수 설명

함수 설명
GROUP BY 칼럼명 칼럼명 값을 기준으로 그룹화하여 집계된 값 추출
WITH ROLLUP 전체의 집계값
*ORDER BY와 함께 사용 불가
HAVING 그룹화된 데이터 필터링
DISTINCT 중복된 값 제거
더보기


WHERE vs. HAVING

  • WHERE: GROUP BY 전의 데이터를 걸러낼 때 사용
  • HAVING: GROUP BY 후의 데이터를 걸러낼 때 사용
더보기

GROUP BY vs. DISTINCT

특징 GROUP BY  DISTINCT
목적 그룹화 및 집계 수행 중복 제거
주 사용사례 그룹별 집계 계산 고유 값 조회
집계함수(sum, count 등) 사용 여부 주로 사용 불필요
결과 그룹별 요약 데이터 반환 중복없는 고유 행 반환
구문 간단 그룹별 통계나 패턴 분석에 적합 단순한 고유 값 추출에 적합
728x90

예시

  • SELECT 나라, COUNT(*) FROM 고객 GROUP BY 나라 ;
    • 해석: ‘나라’로 그룹화하고, ‘나라’로 그룹핑된 갯수를 출력해라
    • 결과: 한국은 3개, 미국은 1개이기 때문에 ‘나라’칼럼은 ‘한국’과 ‘미국’ 출력되고 갯수가 출력

  • SELECT 나라, COUNT(*) FROM 고객 GROUP BY 나라 WITH ROLLUP;
    • 해석: ‘나라’로 그룹화하고, ‘나라’로 그룹핑된 갯수를 출력해라. 그리고 총 합계도 출력해라
    • 결과: 한국은 3개, 미국은 1개이기 때문에 ‘나라’칼럼은 ‘한국’과 ‘미국’ 출력되고 갯수가 출력. WITH ROLLUP으로 3+1 = 4도 출력

    • SELECT 나라, COUNT(*) FROM 고객 WHERE 날짜 > DATE(’2000-01-01) GROUP BY 나라 HAVING COUNT > 2;
      • 해석(1 → 2 → 3 순)
        • WHERE 조건 실행: 날짜가 ’2000-01-01’ 보다 큰 데이터 추출
        • GROUP BY 조건 실행: ‘나라’로 그룹핑하고 그룹핑된 갯수 추출
        • HAVING 조건 실행: 2번 데이터에서 갯수가 2개보다 큰 데이터 추출
      • 결과: 한국은 3개지만 홍길동은 날짜 조건 미충족하여 2개, 미국은 2개, 일본은 추출 갯수가 1개라서 HAVING 조건 미충족하여 미추출되어, 한국’과 ‘미국’ 출력되고 갯수가 각각 2로 출력

  • SELECT DISTINCT 나라, COUNT(*) FROM 고객 ;
    • 해석: ‘나라’칼럼에서 중복값을 제거하고 추출해라
    • 결과: 한국이 3개, 미국 2개, 일본 1개인데, 중복을 제거하므로 한국, 미국, 일본만 추출

728x90
반응형
LIST

'GA 및 data > SQL' 카테고리의 다른 글

[SQL] UNION, UNION ALL  (4) 2024.11.28
[SQL] 서브쿼리  (0) 2024.11.26
[SQL] IF, CASE, IFNULL 조회  (0) 2024.11.23
[SQL] 시간과 날짜 함수  (0) 2024.11.21
[SQL] 사칙연산 조회  (0) 2024.11.17

댓글