0
後行の選択:私は次のような構造を持っているPostgresのDB内のテーブルを持っているpostgresの中に複数のグループ
id | date | groupme1 | groupme2 | value
----------------------------------------
1 |
2 |
3 |
今、私は次のことを達成したい:
後にテーブルをグループ化- groupme1とgroupme2
- 各グループの値を取得
- ただし、各グループの最後のエントリ(日付以降)
例:
id | date | groupme1 | groupme2 | value
---------------------------------------
| | A | 1 | 4
| | A | 2 | 7
| | A | 3 | 3
| | B | 1 | 9
私の現在のアプローチは次のようになります。このアプローチの
SELECT a.*
FROM table AS a
JOIN (SELECT max(id) AS id
FROM table
GROUP BY groupme1, groupme2) AS b
ON a.id = b.id
問題:
- それは高い日付が高いID を持っていることをasumes
- 長くかかります
これを行う方法がより速く、より良い方法はありますか?これでウィンドウ関数が助けますか?
どちらのソリューションが動作します。これは最速の方法ですか? 7000行のデータベースからdatepanに2番目のものを実行するには4.8秒かかります。 – Xlaech
2番目のバージョンがおそらく最も速く、 't(groupme1、groupme2、date desc)'のインデックスは速くなります。 –