반응형
소계/총계 함수
1) ROLLUP
2) CUBE
3) GROUPING SETS
4) GROUPING
1) ROLLUP
- ROLL_UP(A) : A 그룹핑 -> 합계
- ROLL_UP(A, B) : A, B 그룹핑 -> A소계 / 합계
- ROLL_UP(A, B, C) : A, B, C 그룹핑 -> (A소계, B소계) / 합계
SELECT ORDER_DT
, MENU_NAME
, SELLER
, COUNT(*)
FROM CAFE
--GROUP BY ROLLUP(ORDER_DT)
--GROUP BY ROLLUP(ORDER_DT, MENU_NAME)
GROUP BY ROLLUP (ORDER_DT, MENU_NAME, SELLER)
;
주문날짜에 대한 메뉴별 판매한 음료의 소계
주문날짜에 대한 판매한 음료의 소계
총 판매한 음료의 합계
2) CUBE
- CUBE(A) : A 그룹핑 -> 합계
- CUBE(A, B) : A, B 그룹핑 / A 그룹핑 / B 그룹핑 -> A소계, B소계 / 합계
- CUBE(A, B, C) : A, B, C 그룹핑 / A, B 그룹핑 / A, C 그룹핑 / B, C 그룹핑 / A 그룹핑 / B 그룹핑 / C 그룹핑 -> (A소계, B소계), (A소계), (B소계) / 합계
SELECT ORDER_DT
, MENU_NAME
, SELLER
, COUNT(*)
FROM CAFE
--GROUP BY CUBE(ORDER_DT)
--GROUP BY CUBE(ORDER_DT, MENU_NAME)
GROUP BY CUBE (ORDER_DT, MENU_NAME, SELLER)
ORDER BY ORDER_DT
;
주문날짜에 대한 메뉴별 판매한 음료의 소계
주문날짜에 대한 판매한 음료의 소계
메뉴별 판매한 음료의 소계
총 판매한 음료의 합계
3) GROUPING SETS
- GROUPING SETS(A, ()) : A 그룹핑 -> 합계
- GROUPING SETS(A, B, ()) : A 그룹핑 / B 그룹핑 -> 합계
SELECT ORDER_DT
, MENU_NAME
, SELLER
, COUNT(*)
FROM CAFE
--GROUP BY GROUPING SETS(ORDER_DT, ())
--GROUP BY GROUPING SETS(ORDER_DT, MENU_NAME, ())
GROUP BY GROUPING SETS(ORDER_DT, MENU_NAME, SELLER, ())
ORDER BY ORDER_DT, MENU_NAME, SELLER
;
주문날짜별 판매한 음료 수
메뉴별 판매한 음료 수
판매자별 판매한 음료 수
총 판매한 음료의 합계
4) GROUPING
- ROLLUP, CUBE, GROUPING SETS 함수를 사용할 때 소계 자리에 NULL 대신에 텍스트를 쓸 수 있게 해주는 함수이다.
SELECT ORDER_DT
, MENU_NAME
, DECODE(GROUPING(SELLER), 1, 'TOTAL', SELLER) ASSELLER
, COUNT(*)
FROM CAFE
GROUP BY GROUPING SETS(ORDER_DT, ROLLUP(MENU_NAME, SELLER))
ORDER BY ORDER_DT, MENU_NAME, SELLER
;
GROUPING을 이용하여 SELLER 컬럼부분에 NULL 대신 'TOTAL'이 출력됨을 확인 할 수 있다.
그룹함수(소계)에 대해 알아보았다.
소계 생성으로 인해 출력되는 데이터양이 많아서 처음엔 당황했지만
업무를 할때 소계/합계는 거의 필수로 짜기 때문에 아주 유용한 함수라고 생각한다.
이것 또한 한 동안 쓰지 않으면 헷갈릴 수 있으니 복습차 포스팅해본다:)
혹시나 테이블/데이터 생성이 힘든사람을 위해 별거 아니지만
sql문을 첨부파일로 올려놓겠다.
본 게시글 작성 시 2022 유선배 SQL 개발자(SQLD) 괴외노트 참고 하였습니다.
반응형
'개발농장 > DataBase' 카테고리의 다른 글
[데이터모델링] 엔터티(Entity), 인스턴스(Row), 속성(Attribute) | SQLD (0) | 2023.03.05 |
---|---|
[데이터베이스 모델링] 데이터베이스 모델링 | 스키마 구조에 대해 알아보자 | SQLD (0) | 2023.02.26 |
[오라클sql] 윈도우함수_순위함수 | RANK(), DENSE_RANK(), ROW_NUMBER에 대해 알아보자! (0) | 2023.02.17 |
sqlDeveloper 설치하기 | DB연결하기 (0) | 2023.02.15 |
오라클 11g XE 무료버전 설치하기 (0) | 2023.02.12 |
댓글