我正在使用雪花來解決問題。我試圖找到每個用戶 ID 的最小事件時間并將其存盤在同一個表的另一列中。
例如,
| 用戶身份 | client_event_time |
|---|---|
| 1 | 2022-07-28 |
| 1 | 2022-08-04 |
| 1 | 2022-08-21 |
| 2 | 2022-07-29 |
| 2 | 2022-07-31 |
| 2 | 2022-08-03 |
我想像下面這樣存盤它:
| 用戶身份 | client_event_time | 最小事件時間 |
|---|---|---|
| 1 | 2022-07-28 | 2022-07-28 |
| 1 | 2022-08-04 | 2022-07-28 |
| 1 | 2022-08-21 | 2022-07-28 |
| 2 | 2022-07-29 | 2022-07-29 |
| 2 | 2022-07-31 | 2022-07-29 |
| 2 | 2022-08-03 | 2022-07-29 |
我從以下 SQL 查詢開始:
SELECT user_id,client_event_time,
row_number() over (partition by user_id order by client_event_time) row_number,
case
when row_number = 1 then client_event_time
end as MinEventTime
FROM Data
ORDER BY user_id, client_event_time;
| 用戶身份 | client_event_time | 行號 | 最小事件時間 |
|---|---|---|---|
| 1 | 2022-07-28 | 1 | 2022-07-28 |
| 1 | 2022-08-04 | 2 | 無效的 |
| 1 | 2022-08-21 | 3 | 無效的 |
| 2 | 2022-07-29 | 1 | 2022-07-29 |
| 2 | 2022-07-31 | 2 | 無效的 |
| 2 | 2022-08-03 | 3 | 無效的 |
我對在此之后如何進行有點困惑。我也很感激關于另一種方法的建議。謝謝!
uj5u.com熱心網友回復:
您也可以MIN()在此處用作分析函式:
SELECT user_id, client_event_time,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY client_event_time) row_number,
MIN(client_event_time) OVER (PARTITION BY user_id) MinEventTime
FROM Data
ORDER BY user_id, client_event_time;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/522177.html
上一篇:如何檢查前一周的值
