[ORACLE] GROUP BY 1
2024. 5. 3. 10:39ㆍ프로그래밍/ORACLE & SQL
- SUM을 수행하다가 발견.
예시)
SELECT SUM(NUM) OVER(PARTITION BY 1) SUM_NUM
FROM ( SELECT 'A' CODE, 1 NUM
FROM DUAL
UNION ALL
SELECT 'B' CODE, 2 NUM
FROM DUAL
UION ALL
SELECT 'C' CODE, 0 NUM
FROM DUAL)
* 예상 결과 : 첫번째 컬럼 값을 그룹별로 나눠 SUM 수행.
* 실제 결과

- 전체 행을 SUM 한 결과로 출력됨.
- 첫번째 컬럼의 데이터 값으로 그룹화를 하는 것이 아닌,
'1'을 기준으로 그룹화 함을 알 수 있다.
- PARTITION BY 2로 바꾸어도 같은 값임을 확인할 수 있을 것이다.
>> 예상 결과대로 수행하기 위한 수정 쿼리
SELECT SUM(NUM) OVER(PARTITION BY CODE) SUM_NUM
FROM ( SELECT 'A' CODE, 1 NUM
FROM DUAL
UNION ALL
SELECT 'B' CODE, 2 NUM
FROM DUAL
UION ALL
SELECT 'C' CODE, 0 NUM
FROM DUAL)
위의 PARTITION BY 수행을 쉽게 확인하기 위해, GROUP BY 로 풀어서 확인.
* GROUP BY 1
SELECT 1, SUM(NUM)
FROM (SELECT 'A' CODE, 1 NUM
FROM DUAL
UNION ALL
SELECT 'B' CODE, 2 NUM
FROM DUAL
UNION ALL
SELECT 'C' CODE, 0 NUM
FROM DUAL)
GROUP BY 1
* GROUP BY {컬럼명}
SELECT CODE, SUM(NUM)
FROM (SELECT 'A' CODE, 1 NUM
FROM DUAL
UNION ALL
SELECT 'B' CODE, 2 NUM
FROM DUAL
UNION ALL
SELECT 'C' CODE, 0 NUM
FROM DUAL)
GROUP BY CODE
'프로그래밍 > ORACLE & SQL' 카테고리의 다른 글
[Oracle] Filter 오퍼레이션 (0) | 2024.07.30 |
---|---|
[ORACLE] 파티션 테이블 조회 (0) | 2024.06.21 |
[SQL] 쿼리문 실행순서 (0) | 2023.03.27 |
[ORACLE] 문자열 반복 (0) | 2023.03.10 |