最短の(そしておそらく最速の)クエリは、 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あたりの行数 、他のクエリ手法は(はるかに)高速です。参照: