개발 공부 & 정리

[SQL첫걸음] 22강 GROUP BY 본문

공부/DB

[SQL첫걸음] 22강 GROUP BY

현뽀- 2022. 6. 15. 13:35
  • 그룹화하여 집계함수의 활용범위 넓힘
SELECT * FROM [table] GROUP BY row1,row2....

그룹화할 열을 지정한다. → 지정된 열의 값이 같은 행이 하나의 그룹으로 묶인다.

DISTINCT처럼 중복 제거 가능. ←→ 그룹화된 각 그룹이 집계 함수의 parameter로 넘겨진다.

ex : 일별 매출 데이터 → 점포별, 상품별, 일별, 월별 등의 단위 집계

SELECT STORE_NAME, SUM(SALES_AMOUNT),MIN(SALES_MAN) FROM [table] 
GROUP BY STORE_NAME,SALES_AMOUNT,SALES_MAN;
  • HAVING - GROUP BY시 조건식 사용 X → 내부 처리 순서

    그러므로 HAVING을 이용하여 그룹별 집계된 열의 값이나 결과를 조건에 따라 처리.

    WHERE구 → GROUP BY구 → HAVING구 → SELECT구 → ORDER BY구

    MySQL을 제외하면 HAVING에서 Alias사용 X.

  • 복수열의 그룹화

      SELECT ~~no~~, name, ~~quantity~~ FROM [table] GROUP By name;
       -> 그룹화하지 않은 열을 조회하여 에러 발생

    그룹시 결과 → 그룹당 하나의 행을 가진 그룹별 결과, 다른 일반 row들이 있으면 복수의 row 중 그룹마다 어떤값을 반환해주어야할지 모름. → 에러

    ➡️ GROUP BY 하지 않은 열의 경우 집계함수를 사용하지 않은 채 SELECT X.

    → *반환할 열에 집계함수 추가 or 복수의 열 그룹화***

      SELECT MIN(no), name, SUM(quantity) FROM [table] GROUP By name;
      SELECT no, name, quantity FROM [table] GROUP By name, no, quantity;
    • ORDER BY로 정렬
Comments