![](/img/trans.png)
[英]Query that counts total records per day and total records with same time timestamp and id per day in 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.