【问题标题】:Aggregating on groups of data order by date in Snowflake在雪花中按日期聚合数据组
【发布时间】:2021-08-19 09:20:07
【问题描述】:

我的表中有以下数据:

我需要 Snowflake 中的输出如下:

基本上是按交易日期排序,并获得国家和城市的第一笔交易和最后一笔交易以及按顺序完成的交易计数。我尝试使用窗口函数,但没有得到想要的结果。如果您可以看到,棘手的部分是必须按顺序进行分组。您可以看到 TEXAS 和 CALIFORNIA 根据国家和城市的交易顺序重复。

最好是通过查询。第二好,以其他一些快速的计算方式。必须在批量数据上完成。我真的不想采用按顺序提取数据然后按顺序逐行遍历的方法,除非这是唯一的选择。也愿意就此提供建议。谢谢!

【问题讨论】:

    标签: aggregate-functions etl snowflake-cloud-data-platform window-functions


    【解决方案1】:

    提示:分组依据、最小值、最大值、计数

    【讨论】:

    • 这不会为 TEXAS 和 CALIFORNIA 提供多行
    【解决方案2】:

    我能够找到一个逻辑并且以下查询有效:

    select countryid, regionid, min(requesttime), max(requesttime), count(*) from (select deviceid,countryid,regionid,cityid, requesttime,
                 row_number() over (partition by countryid order by requesttime) as seqnum_1,
                 row_number() over (partition by countryid, regionid order by requesttime) as seqnum_2
          from table t order by requesttime
         ) t group by countryid, regionid, (seqnum_1 - seqnum_2) order by min(requesttime);
    

    【讨论】:

      猜你喜欢
      • 2021-04-12
      • 2022-07-06
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 2020-08-06
      • 2016-04-07
      • 2013-11-25
      相关资源
      最近更新 更多