개발 공부 & 정리
[SQL첫걸음] 22강 GROUP BY 본문
- 그룹화하여 집계함수의 활용범위 넓힘
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로 정렬
'공부 > DB' 카테고리의 다른 글
[SQL첫걸음] 24강 상관 서브쿼리 (0) | 2022.06.15 |
---|---|
[SQL첫걸음] 23강 서브쿼리 (0) | 2022.06.15 |
[SQL첫걸음] 21강 COUNT 이외의 집계함수 (0) | 2022.06.15 |
[SQL첫걸음] 20강 행 개수 구하기 - COUNT (0) | 2022.06.15 |
[SQL첫걸음] 19강 물리삭제와 논리삭제 (0) | 2022.06.15 |
Comments