前提・実現したいこと
SQLでウィンドウ関数とGROUP BY句を併用できないかと考えております。
グループ化した集合の最後の値を取得したいと考えております。
以下,例になります。TableAからTableBを取得したいと考えております。
TableA
ID | TIME | NUM |
---|---|---|
1 | 00:00 | 10 |
1 | 01:00 | 9 |
1 | 02:00 | 8 |
2 | 01:00 | 7 |
2 | 03:00 | 6 |
3 | 00:00 | 5 |
4 | 05:00 | 4 |
4 | 06:00 | 3 |
4 | 08:00 | 2 |
4 | 09:00 | 1 |
#####TableB
ID | NUM |
---|---|
1 | 8 |
2 | 6 |
3 | 5 |
4 | 1 |
ID列でグループ化し,TIME列の昇順で最後のNUM列の値を取得したいと思っております。
発生している問題・エラーメッセージ
SQLコンパイルエラー:[TableA.NUM]は式による有効なグループではありません
該当のソースコード
SQL
1SELECT 2 ID, 3 LAST_VALUE(NUM) OVER (PARTITION BY ID ORDER BY TIME DESC) as NUM 4FROM 5 TableA 6GROUP BY 7 ID
試したこと
ウィンドウ関数であるLAST_VALUEを用いて行おうとしましたが,上記のエラーが発生しております。
補足情報(FW/ツールのバージョンなど)
データベース:Snowflake
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。