2023-04-11 TIL 22강 그룹화 - GROUP BY
SELECT [열명] FROM [테이블명] GROUP BY [열명] : 그룹화하기
- DISTINCT를 지정했을 때와 같은 결과가 나옴
- 열을 지정하여 그룹화하면 지정된 열의 값이, 같은 행이 하나의 그룹으로 묶임
SELECT name FROM sample51 GROUP BY name;
- GROUP BY로 그룹화된 각각의 그룹이 하나의 집합으로서 집계함수의 인수로 넘겨진다
SELECT name, COUNT(name), SUM(quantity) FROM sample51 GROUP BY name;
HAVING 구로 조건 지정
- 집계함수는 WHERE 구를 사용할 수 없다
- WHERE 구로 행을 검색하는 처리가 GROUP BY로 그룹화하는 처리보다 먼저이기 때문이다
- 내부처리 순서 : WHERE 구 > GROUP BY 구 > SELECT 구 > ORDER BY 구
- HAVING 구를 사용하면 집계함수를 사용해서 조건식을 지정할 수 있다
SELECT name, COUNT(name) FROM sample51 GROUP BY name HAVING COUNT(name) = 1;
- HAVING 구는 SELECT 구보다 먼저 처리되므로 별명(AS)을 사용할 수 없다
- HAVING 구 내부처리 순서 : WHERE 구 > GROUP BY 구 > HAVING 구 > SELECT 구 > ORDER BY 구
복수열의 그룹화
- SELECT 구에는 GROUP BY로 지정한 열 또는 집계함수를 사용한 열을 작성할 수 있다
- name 열 값이 A 그룹의 quantity 열 값은 1, 2 두 개이고, 이때 그룹마다 하나의 값만을 반환해야 하므로 어느 것을 반환하면 좋을지 몰라 에러가 발생한다
- 집계함수를 사용하면 집합은 하나의 값으로 계산되므로, 그룹마다 하나의 행을 출력할 수 있다
결과값 정렬
- GROUP BY 로 정렬은 불가하므로 ORDER BY 구를 사용하여 정렬한다
'프로그래밍 언어 > SQL' 카테고리의 다른 글
[MySQL] 합계(SUM), 평균(AVG), 최솟값(MIN), 최댓값(MAX) (0) | 2023.04.10 |
---|---|
[MySQL] 행 개수 구하기(COUNT), 중복 제거하기(DISTINCT) (0) | 2023.04.07 |
[MySQL] 물리삭제(DELETE)와 논리삭제(UPDATE) (0) | 2023.04.05 |
[MySQL] 데이터 갱신하기(UPDATE) (0) | 2023.04.03 |
[MySQL] 삭제하기(DELETE) (0) | 2023.03.29 |