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을 써야한다.
댓글남기기