1 분 소요

SQL 기초 GROUP BY

GROUP BY

집계함수

  • AVG(), COUNT(), MAX(), MIN(), SUM()
  • SELECT MAX(column), MIN(column) FROM table;
  • AVG() 는 기본적으로 소수로 값이 나오기 때문에 ROUND() 함수를 섞어서 쓴다
  • 더 많은 함수 보기

GROUP BY

  • 그룹으로 묶는다 예를 들어 카테고리에 있는 항목의 중복을 없애면서 각각의 Data Value 의 합산을 구한다면 아래와 같다.
Category Data Value
A 10
A 5
B 2
B 4
C 12
C 6
SELECT Category, sum(Data Value) from table
GROUP BY Category

SELECT category_col, ACC(data_col) FROM table GROUP BY category_col;
  • GROUP BY 절은 FROM 문 바로 뒤 또는 WHERE 문 바로 뒤에 와야한다.
SELECT category_col, AGG(data_col) FROM table WHERE category_col != 'A' GROUP BY category_col;
  • GROUP BY를 실행하기 전에 WHERE 문을 이용해서 데이터를 필터링 할 수 있다.
    SELECT category_col, AGG(data_col) FROM table GROUP BY category_col;
    SELECT company, division SUM(sales) FROM finance_table GROUP BY company, division;
    
  • SELECT 열은 GROUP BY 에도 반드시 포함되어야한다 예외는 계산 함수들만 가능
    SELECT company, SUM(sales) FROM finance_table GROUP BY company ORDER BY SUM(sales);
    
  • 판매액 순이 아닌 판매액 합계순임

HAVING

SELECT company, SUM(sales) FROM finance_table GROUP BY company;

SELECT company, SUM(sales) FROM finance_table WHERE company != 'Google' GROUP BY company;
  • 사전에 구글 제외하고 그루핑
SELECT company, SUM(sales) FROM finance_table WHERE company != 'Google' GROUP BY company HAVING SUM(sales) > 1000
  • SUM 은 GROUP BY 가 끝난 후에야 실행된다. 그래서 SUM을 기준으로 다시 한 번 필터를 걸려면 위와 같이 HAVING을 써야한다.

댓글남기기