繁体   English   中英

通过 SQL (Bigquery) 获取每位用户每天的最新余额

[英]Get latest balance by day per user via SQL (Bigquery)

我在下面有一个示例表:

+---------------------+---------+--------+
| timestamp           | id      | balance|
|---------------------+---------+--------|
| 2022-08-01 00:00:00 | 1       | 0.01   |
| 2022-08-01 00:00:00 | 2       | 0      | 
| 2022-08-02 00:00:00 | 2       | 0.005  |
| 2022-08-02 07:00:00 | 2       | 0.5    |
| 2022-08-02 07:00:00 | 1       | 0.15   |
| 2022-08-03 00:00:00 | 1       | 0.02   |
| 2021-08-03 01:00:00 | 1       | 0.03   |
+---------------------+---------+--------+

我想要以下 output:

+---------------------+---------+--------+
| timestamp           | id      | balance|
|---------------------+---------+--------|
| 2022-08-01 00:00:00 | 1       | 0.01   |
| 2022-08-01 00:00:00 | 2       | 0      | 
| 2022-08-02 07:00:00 | 2       | 0.5    |
| 2022-08-02 07:00:00 | 1       | 0.15   |
| 2021-08-03 01:00:00 | 1       | 0.03   |
+---------------------+---------+--------+

我想每天获取每个 ID 的最新余额。 理想情况下,sql 将使用 window function,因为源数据表非常大(~900GB),我需要一些可以扩展的高效。

我花了很多时间试图解决这个问题并一直卡住,任何帮助将不胜感激! 提前致谢

考虑以下简单的方法

select * from your_table
qualify 1 = row_number() over id_day
window id_day as (partition by id, date(timestamp) order by timestamp desc)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM