次のクエリ:
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」問題にエレガントで素朴なソリューションを紹介し、その後徐々にそれを改善します。