일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Serial
- oracle
- sql developer
- 윈도우10
- MSSQL
- pymssql
- django
- 티스토리 초대장
- c#
- Python
- rs422
- Visual Studio Code
- 텐서플로우
- 오라클
- 파이썬
- rs485
- MX Component
- 크롤링
- MEAN Stack
- 장고
- tensorflow
- M2M
- MSSQL PYTHON
- 자본주의
- matplot
- windows10
- PYTHON MSSQL
- scrapy
- 딥러닝
- vscode
- Today
- Total
안까먹을라고 쓰는 블로그
[MSSQL] 집계함수 (GROUP BY, ROLLUP, CUBE, GROUPING SETS) 본문
MSSQL 의 집계함수들에 대한 정리자료 입니다.
테이블 정보
SELECT DT_ORDER, CD_ITEM, QT_ORDER FROM [DZ].[dbo].[ORDER]
ORDER BY DT_ORDER, CD_ITEM
DT_ORDER : 20230901 에는 CD_ITEM : item1 이 2개 있습니다.
DT_ORDER : 20230902 에는 CD_ITEM : item2 이 2개 있습니다.
DT_ORDER : 20230903 에는 CD_ITEM : item3 이 2개 있습니다.
GROUP BY
GROUP BY는
- GROUP BY [설정컬럼 들...]
와 같이 사용하며, 설정한 "설정컬럼 들.."을 기준으로 하여,
그룹을 지어서 조회가 되며,
※ "설정컬럼 들.."에 없는 컬럼은 SUM, COUNT, AVG, MAX, MIN 등의 함수를 사용하여 조회를 하여야 합니다.
Ex) 아래의 SUM(QT_ORDER)
SELECT DT_ORDER, CD_ITEM, SUM(QT_ORDER) AS QT_SUM FROM [DZ].[dbo].[ORDER]
GROUP BY DT_ORDER, CD_ITEM
ORDER BY DT_ORDER, CD_ITEM
ROLLUP
ROLLUP은 "GROUP BY" + 소계,합계 까지 조회 가 됩니다.
※ "설정컬럼 들.."에 없는 컬럼은 SUM, COUNT, AVG, MAX, MIN 등의 함수를 사용하여 조회를 하여야 합니다.
Ex) 아래의 SUM(QT_ORDER)
SELECT DT_ORDER, CD_ITEM, SUM(QT_ORDER) AS QT_SUM FROM [DZ].[dbo].[ORDER]
GROUP BY ROLLUP(DT_ORDER, CD_ITEM)
CUBE
CUBE는
- CUBE("설정컬럼 들..")
"설정컬럼 들.."의 그룹 기준 및 각 항목 별로 집계를 하여 조회 됩니다.
※ "설정컬럼 들.."에 없는 컬럼은 SUM, COUNT, AVG, MAX, MIN 등의 함수를 사용하여 조회를 하여야 합니다.
Ex) 아래의 SUM(QT_ORDER)
SELECT DT_ORDER, CD_ITEM, SUM(QT_ORDER) AS QT_SUM FROM [DZ].[dbo].[ORDER]
GROUP BY CUBE(DT_ORDER, CD_ITEM)
GROUPING SETS
GROUPING SETS 는
- GROUPING SETS("설정 컬럼 들") 과 같이 사용하며,
"설정컬럼 들" 각각을 기준으로 집계를 하여 조회됩니다.
※ "설정컬럼 들.."에 없는 컬럼은 SUM, COUNT, AVG, MAX, MIN 등의 함수를 사용하여 조회를 하여야 합니다.
Ex) 아래의 SUM(QT_ORDER)
SELECT DT_ORDER, CD_ITEM, SUM(QT_ORDER) AS QT_SUM FROM [DZ].[dbo].[ORDER]
GROUP BY GROUPING SETS(DT_ORDER, CD_ITEM)
GROUPING
GROUPING 는 직접적으로 집계를 해주는 함수는 아니고, 집계 시,, 위의 함수를 사용할때 부가적으로 사용할 수 있는 함수입니다.
집계가 계산된 항목에 대해서는 1의 값을 갖고, 그렇지 않은 항목은 0을 갖는 성질을 이용하여,
아래와 같이 사용할 수 있습니다.
※ GROUP BY, ROLLUP, CUBE, GROUPING SETS 에서 모두 사용가능합니다.
SELECT
CASE GROUPING(DT_ORDER) WHEN 1 THEN '전체배송일' ELSE DT_ORDER END AS DT_ORDER,
CASE GROUPING(CD_ITEM) WHEN 1 THEN '전체품목' ELSE CD_ITEM END AS CD_ITEM,
SUM(QT_ORDER) AS QT_SUM
FROM [DZ].[dbo].[ORDER]
GROUP BY GROUPING SETS(DT_ORDER, CD_ITEM)
위 에서와 같이, GROUPING SETS만 사용하는 경우, 아래의 DT_ORDER, CD_ITEM이 NULL로 표시되는 부분에
원하는 값을 설정할 수 있습니다.
좀더 자세한 설명을 원하시면, 아래의 MS공식사이트를 참고하시기 바랍니다.
https://learn.microsoft.com/en-us/sql/t-sql/queries/select-group-by-transact-sql?view=sql-server-ver16
끝~
'DataBase > MS SQL' 카테고리의 다른 글
[MSSQL] 트랜잭션(Transaction) (0) | 2023.09.26 |
---|---|
[MSSQL] 순차 합계구하기 (Feat. OVER, PARTITION BY) (0) | 2023.09.22 |
[MSSQL] 오래걸리는 쿼리내역 조회 (0) | 2023.05.03 |
[MSSQL] 프로시저 - 구간 별 성능체크 (0) | 2023.01.06 |
[MSSQL] 오라클 다중 IN => MSSQL 구현 (0) | 2022.10.23 |