[ MS SQL ] 그룹별 TOP 10 뽑는 쿼리
2024. 1. 16. 18:23ㆍDB/MS SQL
728x90
반응형
방문 시 기록되는 테이블이 있습니다.
TB_VISIT
방문일자 | 이름 |
2023-01-02 09:01:45.037 | 철수 |
2023-01-05 09:01:45.037 | 영희 |
2023-01-12 09:01:45.037 | 철수 |
2023-01-13 09:01:45.037 | 민수 |
2023-02-02 09:01:45.037 | 민수 |
2023-02-03 09:01:45.037 | 민수 |
2023-02-04 09:01:45.037 | 영희 |
월별 방문자 순위를 10위까지 뽑고 싶으면 다음과 같이 하면 됩니다.
SELECT *
FROM (SELECT LEFT(CONVERT(char(8), regtDate, 112), 6) Date,
name,
COUNT(*) Count,
ROW_NUMBER() OVER (PARTITION BY LEFT(CONVERT(char(8), regtDate, 112), 6) ORDER BY Count(*) DESC) AS RankNo
FROM TB_VISIT
WHERE Convert(char(8), regDate, 112) BETWEEN '20230101' AND '20231231'
GROUP BY LEFT(CONVERT(char(8), regtDate, 112), 6), name) A
WHERE RankNo <= 10
ORDER BY Date, Count Desc
결과는 다음과 같습니다.
Date | name | Count | RankNo |
202301 | 철수 | 2 | 1 |
202301 | 민수 | 1 | 2 |
202301 | 영희 | 1 | 3 |
202302 | 민수 | 2 | 1 |
202302 | 영희 | 1 | 2 |
그룹별로 일정 개수만 출력하고 싶을 때 사용할 수 있습니다.
728x90
반응형
'DB > MS SQL' 카테고리의 다른 글
[ MS SQL ] 테이블 참조하여 생성 및 복사하기 SELECT INTO문 (0) | 2023.01.19 |
---|