본문 바로가기
dev/DB

[DB/Mysql] HAVING, GROUP BY

by dev_Step 2022. 7. 5.

 

select 절 5
from 절 1
where 절 2
group by 절 3
having 절 4
order by 절 6

 

>> GROUP BY 절을 기술하지 않거나 GROUP BY 절에 NULL 이나 ()을 기술하면 전체 행이 하나의 행그룹으로 처리된다.

>> 위의  쿼리문을 잘 분석해보면

detpno job sal 행그룹 c1
10 MANAGER 2450 10 7459
10 PERSIDENT 5000
20 ANALYST 3000 20 8975
20 ANALYST 3000
20 MANAGER 2975
30 MANAGER 2850 30 2850

 

>> 위의 쿼리를 분석해보자면

detpno job sal 행그룹 c1
10 MANAGER 2450 10, MANAGER 2450
10 PERSIDENT 5000 10,PRESIDENT 5000
20 ANALYST 3000 20, ANALYST 6000
20 ANALYST 3000
20 MANAGER 2975 20, MANAGER 2975
30 MANAGER 2850 30, MANGER 2850

 

>> GROUP BY 절을 사용한 쿼리는 SELECT 절과 ORDER BY 절에 GROUP BY 절의 표현식이나 집계함수를 사용한 표현식만 기술할 수 있다. 즉 SELECT절 , ORDER BY 절에 집계함수를 사용한 경우만 GROUP BY 절을 사용할 수 있다.

 

GROUP BY 절의 확장

ROLLUP

CUBE

관련된 내용은 https://step-by-step-dev.tistory.com/47?category=1253712 에 기술되어 있다.

 

>>ROLLUP

group by 결과
ROLLUP(a) (a), ()
ROLLUP(a,b) (a,b), (a), ()
ROLLUP(a,b,c) (a,b,c), (a,b), (a), ()

 

>> CUBE

group by 결과
CUBE(a) (a) ()
CUBE(a,b) (a,b), (a), (b), ()
CUBE(a,b,c) (a,b,c), (a,b), (a,c), (b,c), (a), (b), (c), ()

 

'dev > DB' 카테고리의 다른 글

[DB/ORACLE] 분석함수 및 활용(선형 보간, 선분이력)  (0) 2022.11.28
[DB/ORACLE] 분석함수  (0) 2022.11.25
[DB/MySQL] 기타함수(Group_concat)  (0) 2022.07.05
[DB/MySQL] 집계함수  (0) 2022.07.05
[DB/ORACLE] WHERE 절  (0) 2022.07.04