最短の(そしておそらく最速の)クエリは、 DISTINCT ON
、SQL標準のPostgreSQL拡張機能DISTINCT
条項:
SELECT DISTINCT ON (1)
id, count, year
FROM tbl
ORDER BY 1, 2 DESC, 3;
番号は、SELECT
の順序位置を示しています リスト。わかりやすくするために列名を詳しく説明できます:
SELECT DISTINCT ON (id)
id, count, year
FROM tbl
ORDER BY id, count DESC, year;
結果はid
の順に並べられます 歓迎される場合とされない場合があるなど。いずれにせよ、「未定義」よりはましです。
また、明確に定義された方法で(複数の年が同じ最大数を共有する場合)関係を断ち切ります。最も早い年を選択します。気にしない場合は、year
を削除してください ORDER BY
から 。または、year DESC
で最新の年を選択してください 。
多くの場合 id
あたりの行数 、他のクエリ手法は(はるかに)高速です。参照: