Notice
Recent Posts
Recent Comments
Link
250x250
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 티스토리챌린지
- 오라클인덱스힌트
- 오블완
- 데이터csv생성
- ssh접속오류
- num_index_keys
- mariaDB
- 대량dml튜닝
- sqlp합격후기
- datadir 변경
- PROFILE EXPDP
- 실제플랜조회
- 통계정보복구
- MariaDB기본디렉토리변경
- autocommit설정
- 오라클
- sqlp시험일정
- inlist
- sqlp공부방법
- postgreql 오브젝트 조회
- DATABASELINK
- public synonym EXPDP
- job관리
- Connect Storage Engine
- 리눅스
- 오라클기동
- mariaDB설치오류
- 통계정보백업
- oracle
- Linux
Archives
- Today
- Total
IT study
[SQLD] 그룹 함수 ( ROLLUP, CUBE, GROUPING SETS ) 본문
728x90
반응형
2과목 헷갈림 2..
rollbup, cube, grouping sets
--테스트데이터생성
CREATE TABLE sales (
sale_id INT PRIMARY KEY,
sale_date DATE,
product_id VARCHAR(10),
sales_amount DECIMAL(10, 2)
);
INSERT INTO sales (sale_id, sale_date, product_id, sales_amount) VALUES (5, '2023-01-15', 'B', 1000.00);
INSERT INTO sales (sale_id, sale_date, product_id, sales_amount) VALUES (6, '2023-02-20', 'C', 1500.00);
INSERT INTO sales (sale_id, sale_date, product_id, sales_amount) VALUES (7, '2023-03-10', 'A', 800.00);
INSERT INTO sales (sale_id, sale_date, product_id, sales_amount) VALUES (8, '2023-04-05', 'C', 1200.00);
ALTER TABLE sales ADD (gubun varchar2(5));
UPDATE sales
SET gubun = CASE WHEN product_id = 'A' AND mod(sale_id,2) = 1 THEN 'ONE'
WHEN product_id = 'B' AND mod(sale_id,2) = 1 THEN 'TWO'
WHEN product_id = 'C' AND mod(sale_id,2) = 0 THEN 'THREE' ELSE 'FOUR' END;
--컬럼 1일때 (group by , cube, rollup 동일함)
SELECT product_id, sum(sales_amount)
FROM sales
GROUP BY cube(product_id);
SELECT product_id, sum(sales_amount)
FROM sales
GROUP BY rollup(product_id);
SELECT product_id, sum(sales_amount)
FROM sales
GROUP BY GROUPING sets(product_id);
--컬럼2개
SELECT to_char(sale_date,'MM'), product_id, sum(sales_amount)
FROM sales
GROUP BY cube(to_char(sale_date,'MM'), product_id);-- group by + 모든 컬럼에 대해 각각 소계와 총계
SELECT to_char(sale_date,'MM'), product_id, sum(sales_amount)
FROM sales
GROUP BY rollup(to_char(sale_date,'MM'), product_id); --group by + 첫번째 컬럼기준으로 소계와 총계
SELECT to_char(sale_date,'MM'), product_id, sum(sales_amount)
FROM sales
GROUP BY GROUPING sets(to_char(sale_date,'MM'), product_id); --컬럼1에 대한 전체 집계, 컬럼2에 대한 전체집계, (컬럼1,컬럼2) 묶어 사용시 한컬럼으로보고집계 (group by 결과 포함 X)
--컬럼3개
SELECT gubun, to_char(sale_date,'MM'), product_id, sum(sales_amount)
FROM sales
GROUP BY cube(gubun,to_char(sale_date,'MM'), product_id)
ORDER BY 1,2,3;
-- group by + 모든 컬럼에 대해 각각 소계와 총계
SELECT gubun,to_char(sale_date,'MM'), product_id, sum(sales_amount)
FROM sales
GROUP BY rollup(gubun,to_char(sale_date,'MM'), product_id); --group by + 첫번째 컬럼기준으로 소계와 총계
SELECT gubun,to_char(sale_date,'MM'), product_id, sum(sales_amount)
FROM sales
GROUP BY GROUPING sets(gubun,to_char(sale_date,'MM'), product_id);
--컬럼3개일때 결과
--cube
--rollup
--grouping sets
출처 : https://velog.io/@damool/rollup-cube-grouping-sets-를-알자보자
728x90
반응형
'자격증 > SQLP (완료)' 카테고리의 다른 글
[SQLP] SQL 분석도구 (0) | 2025.02.13 |
---|---|
[SQLP] Hash Join 정리 (1) | 2025.02.12 |
[SQLP] SQL 트레이스 CALL 통계 결과 분석( 핵심노트) (1) | 2025.02.12 |
[SQLD] 오라클 정규표현식 (0) | 2025.02.10 |
2025년 SQLD / SQLP 자격 시험 일정 (0) | 2024.11.29 |