MySQL

[MySQL] 그룹 별 상위 n 개

야챔 2021. 7. 19. 19:57

sort 는 D, T, O 3개가 있고 group by sort를 하여서 D, T, O 의 데이터들을 상위 각 각 5개씩 불러올 것이다.

 

RANK(), ROW_NUMBER()를 사용하여 각각 5개의 데이터 뽑아왔다.

 

SELECT * FROM (
   SELECT *, RANK() OVER (PARTITION BY qna.sort ORDER BY qna.question ASC, qna.id ASC) AS a
   FROM QnAQuestion AS qna
) AS rankrow
WHERE rankrow.a <= 5;

 

결과

 

 

* UNION ALL의 방법도 있음

 

 

 

 

 

참고한 블로그의 CROSS APPLY는 MySQL에서 불가한듯

참고 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=easternsun&logNo=220166275377