前提・実現したいこと
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
プレビュー