首页 > 解决方案 > 如何为用户返回每月最大日期

问题描述

我有下表:

表格1

我想为每个用户返回每个月的最大阈值日期,所以我的最终结果应该是这样的:

表2

我想使用分析函数 ROW_NUMBER 并返回最大行数,但如何为每个用户每月执行此操作?在 BigQuery 中是否有更简单的方法?

标签: sqlselectgoogle-bigquerytop-n

解决方案


您可以row_number按用户和月份分区,然后为每个分区取第一个:

SELECT user_id, threshold_date, net_deposists_usd
FROM   (SELECT user_id, threshold_date, net_deposists_usd,
               ROW_NUMBER () OVER (PARTITION BY user_id, EXTRACT (MONTH FROM threshold_date)
                                   ORDER BY net_deposists_usd DESC) AS rk
        FROM   mytable)
WHERE  rk = 1

推荐阅读