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 |