일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- sql developer
- 장고
- MX Component
- oracle
- Serial
- Python
- 자본주의
- 파이썬
- MEAN Stack
- django
- M2M
- 오라클
- MSSQL
- matplot
- scrapy
- PYTHON MSSQL
- MSSQL PYTHON
- c#
- Visual Studio Code
- 텐서플로우
- rs485
- 딥러닝
- 티스토리 초대장
- tensorflow
- 크롤링
- vscode
- 윈도우10
- windows10
- rs422
- pymssql
Archives
- Today
- Total
안까먹을라고 쓰는 블로그
[MSSQL] 순번 매기기(Feat. 그룹 별 최상위 데이터 가져오기) 본문
반응형
순위함수 와 OVER절을 사용하여, 데이터의 순번을 매길 수 있습니다.
아래는 순위함수 별 순번을 매기는 방법 및 결과에 대해서 설명합니다.
원본 데이터
SELECT * FROM [NEOE].[ORDER] ORDER BY CD_ITEM, DT_ORDER, QT_ORDER
QT_ORDER 큰 순서로 전체 넘버 매기기
SELECT
DT_ORDER,
CD_ITEM,
QT_ORDER,
ROW_NUMBER() OVER (ORDER BY QT_ORDER DESC) AS RankNo
FROM [NEOE].[ORDER]
QT_ORDER 큰 순서로 전체 넘버 매기기
. RANK()는 중복값이 있으면 동일한 순번으로 표시 되며, 다음순번에 그만큼 +가 된 값이 표시됨.
SELECT
DT_ORDER,
CD_ITEM,
QT_ORDER,
RANK() OVER (ORDER BY QT_ORDER DESC) AS RankNo
FROM [NEOE].[ORDER]
QT_ORDER 큰 순서로 전체 넘버 매기기
. DENSE_RANK()는 RANK()와 같이 중복값이 있으면 동일한 순번으로 조회 되며,
RANK()와는 다르게 다음 순번은 그 이후의 순번이 순차적으로 표시 됨.
SELECT
DT_ORDER,
CD_ITEM,
QT_ORDER,
DENSE_RANK() OVER (ORDER BY QT_ORDER DESC) AS RankNo
FROM [NEOE].[ORDER]
QT_ORDER 큰 순서로 그룹으로 나눠서 순번 정하기
. NTILE(n) 은 n개의 그룹으로 나눠서 순번을 정해서 조회 됨.
SELECT
DT_ORDER,
CD_ITEM,
QT_ORDER,
NTILE(3) OVER (ORDER BY QT_ORDER DESC) AS RankNo
FROM [NEOE].[ORDER]
각 품목(CD_ITEM) 별, QT_ORDER가 가장 큰것 1개씩 조회
SELECT * FROM (
SELECT
DT_ORDER,
CD_ITEM,
QT_ORDER,
ROW_NUMBER() OVER (PARTITION BY CD_ITEM ORDER BY QT_ORDER DESC) AS RankNo
FROM [NEOE].[ORDER]
) T
WHERE RankNo = 1
T 의 조회 데이터를 보면, 아래와 같이 조회되며, CD_ITEM별로 RankNo를 매깁니다.
여기에서, RankNo = 1 인것만을 조회하면, 각 CD_ITEM별 가장 큰 QT_ORDER를 조회하게 됩니다.
PATITION BY 의 항목을 통해서, 파티션 기준을 변경 가능하며,,
ORDER BY 를 변경하여, 큰것이 아니라,작은 것이나 다른 항목을 기준으로도 조회 가능합니다.
SELECT
DT_ORDER,
CD_ITEM,
QT_ORDER,
ROW_NUMBER() OVER (PARTITION BY CD_ITEM ORDER BY QT_ORDER DESC) AS RankNo
FROM [NEOE].[ORDER]
끝
반응형
'DataBase > MS SQL' 카테고리의 다른 글
[MSSQL] LinkedServer 쿼리 오류(ORA-01403: 데이터를 찾을 수 없음 (0) | 2022.07.01 |
---|---|
[MSSQL] 부분권한 설정 (0) | 2022.05.27 |
[MSSQL] SPLIT 구현 (0) | 2022.05.05 |
[MSSQL] 조회 시, ROW <=> COLUMNS 방향 변경 (0) | 2022.04.06 |
[MSSQL] 컬럼의 데이터 번호붙여서 업데이트하기 (0) | 2022.02.08 |
Comments