首页 > 解决方案 > 如何在一个sql中以每周和每月的粒度计算数据

问题描述

我在 S3 上有这种格式的数据我使用 athena 在加入 2 个键列后生成聚合结果

[1]:https://i.stack.imgur.com/OCUCe.png

要求 -

在国家层面,我必须计算每日、每周和每月的事件数量所以对于日本来说,在 10 月的两个事件中,每周的一个事件应该显示为结果。

预期结果 -

当我加入国家和 event_date == transaction_date

在此处输入图像描述 我如何在 SQL 中做同样的事情

标签: sqlaggregate

解决方案


嗯。. . 如果我关注您的问题,您可以在子查询中使用窗口函数,然后进行过滤:

select t.*
from (select t.*,
             count(*) over (partition by eventdate) as day_count,
             count(*) over (partition by week) as week_count,
             count(*) over (partition by month) as month_count
      from t
     ) t
where eventdate = :transactiondate

推荐阅读