반응형
Rank 순위 매기기
예제 쿼리 및 주석.
SELECT *
FROM (
SELECT
c.prvn_name, c.distc_name, c.attrc_name, figure,
(CASE @name WHEN distc_name THEN @rownum:=@rownum+1
ELSE @rownum:=1
END) as rank,
//table b 에서 만든 name과 rownum값으로 rank 값 생성한다.
기준이 되는 이름이 앞의 값과 같다면 +1 씩, 그렇지 않으면 1 대입(순위 초기화)
@name:=distc_name as distc_name
FROM
(
SELECT p.prvn_name, d.distc_name, a.attrc_name, ROUND(SUM(f.native_cnt)) as figure
FROM province p
JOIN district d ON p.prvn_cd = d.prvn_cd
JOIN attraction a ON d.prvn_cd = a.prvn_cd AND d.distc_cd = a.distc_cd
JOIN figure f ON a.prvn_cd = f.prvn_cd AND a.distc_cd = f.distc_cd AND a.attrc_cd = f.attrc_cd
WHERE p.prvn_name = '경기도' AND SUBSTR(f.basis_date,1,4) = '2017'
GROUP BY a.attrc_cd, p.prvn_cd ,d.distc_cd
ORDER BY d.distc_cd, figure desc
) a,
(SELECT @ROWNUM:=0 AS rownum, @NAME = 'abc' AS name FROM dual) b
// rack값 생성위한 rownum, name 생성 및 초기화,
) c
WHERE rank=1;
반응형
'Back-end > DataBase' 카테고리의 다른 글
SQL 통계 - 행열 뒤집기 연습문제 난이도 ★★★★★ (0) | 2018.06.20 |
---|---|
SQL 통계_ 행열 뒤집기. ( 시계열 표현 ) (0) | 2018.06.20 |
SQL 통계_ 서브쿼리 Sub Query (0) | 2018.06.20 |
SQL을 이용한 통계 (0) | 2018.06.20 |
SQL - DML이란? (쿼리 연습) (0) | 2018.06.15 |