다음 쿼리 :
SELECT
year, id, rate
FROM h
WHERE year BETWEEN 2000 AND 2009
AND id IN (SELECT rid FROM table2)
GROUP BY id, year
ORDER BY id, rate DESC
수율 :
year id rate
2006 p01 8
2003 p01 7.4
2008 p01 6.8
2001 p01 5.9
2007 p01 5.3
2009 p01 4.4
2002 p01 3.9
2004 p01 3.5
2005 p01 2.1
2000 p01 0.8
2001 p02 12.5
2004 p02 12.4
2002 p02 12.2
2003 p02 10.3
2000 p02 8.7
2006 p02 4.6
2007 p02 3.3
내가 원하는 것은 각 ID의 상위 5 개 결과입니다.
2006 p01 8
2003 p01 7.4
2008 p01 6.8
2001 p01 5.9
2007 p01 5.3
2001 p02 12.5
2004 p02 12.4
2002 p02 12.2
2003 p02 10.3
2000 p02 8.7
GROUP BY 내에서 작동하는 수정 자와 같은 일종의 LIMIT를 사용하여 이것을 수행하는 방법이 있습니까?
LIMIT
절 을 추가하는 것만 큼 간단하지는 않습니다 . 다음은 문제를 자세히 설명하는 기사입니다. SQL에서 그룹당 첫 번째 / 최소 / 최대 행을 선택하는 방법 좋은 기사입니다. "그룹당 상위 N 개"문제에 대해 우아하지만 순진한 솔루션을 소개합니다. 그것에 향상됩니다.