내 세상

[MySQL] 그룹 지어서 상위 N개 추출하는 쿼리 본문

Technical/MySQL

[MySQL] 그룹 지어서 상위 N개 추출하는 쿼리

sga8 2021. 10. 29. 18:27
728x90
반응형
SELECT TestA as ta, TestB as tb, TestC, TestD, RANK_NUM FROM
	(SELECT 
		*, 
        (CASE @groupColumn WHEN column1 THEN @rowNum:=@rowNum+1 ELSE @rowNum:=1 END) AS RANK_NUM,
		(@groupColumn:=column1) 
		FROM noname_table ORDER BY column1, column2 desc
	) AS rankTable WHERE RANK_NUM <= 10;

 

위의 예시에서 noname_table에서 column1, column2로 order by를 한 후

column1을 group지어서 사용하고, column2에 따라 정렬된 걸 rank_num로 매순간 매김.

 

그리고 그 결과를 rankTable로 alias하고 WHERE 걸어서 RANK_NUM이 10보다 작은 걸 추출하는 쿼리

 

특정 칼럼(column1)으로 그룹지어서 column2로 sort하고 상위 10개를 추출하는 쿼리임

728x90
반응형