create view "data" as select [...]
ステートメントの結果としての生データ:
projectId resourceId num
1052785922 318153743 10
1052785922 318153743 20
1052785922 318153743 30
1052785936 -2097765361 20
1052785936 318153743 10
1052785936 528513104 30
1052786014 -2097765361 20
1052786014 318153743 10
1052786014 528513104 30
1052786021 -2097765361 20
1052786021 318153743 10
1052786021 528513104 30
1052786099 -2097765361 20
1052786099 318153743 10
上記のデータをフィルタリングして、projectId ごとに max(num) の行のみを取得しようとしました。
推定結果:
projectId resourceId num
1052785922 318153743 30
1052785936 528513104 30
1052786014 528513104 30
1052786021 528513104 30
1052786099 -2097765361 20
num = max(num)
self left join on 、window-function like 、または CTEの可能性については知っていmax(num) over ( partition by projectId )
ますが、num の値が最も高いものを選択する他の可能性があるかどうか疑問に思います。
背景: 上記のデータは、比較的複雑な大きなビューの一部に過ぎません。これはビューなので、CTE などについてはこのように考えていません。ビューで提供されるデータは、計画アプリにフィードするためのものであり、ランタイムは非常に重要です。苦労して、パフォーマンスの高いビュー選択で終わることはしたくありません。
上記の「生データ」は、数十のテーブルのデータを組み合わせたビューの結果です。このビューの作成ステートメントでグループ化された最大値を一度にフィルタリングする方法を探しています。その間に追加のレイヤーやビューを配置する必要はありません!