| 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 |