【问题标题】:Athena get the minimum value in each group and corresponding other column valuesAthena 获取每组中的最小值和对应的其他列值
【发布时间】:2020-12-29 18:01:26
【问题描述】:

输入表

user id action  date           collection

aaa  1   view   2020-09-01     {some JSON data_1}
aaa  1   view   2020-09-02     {some JSON data_2}
aaa  1   view   2020-09-03     {some JSON data_3}
bbb  2   view   2020-09-08     {some JSON data_22}
bbb  2   view   2020-09-09     {some JSON data_23}
ccc  2   view   2020-09-01     {some JSON data_99}
ddd  3   view   2020-09-01     {some JSON data_88}

输出表

user id action  date           collection

aaa  1   view   2020-09-01     {some JSON data_1}
bbb  2   view   2020-09-08     {some JSON data_22}
ccc  2   view   2020-09-01     {some JSON data_99}
ddd  3   view   2020-09-01     {some JSON data_88}

如果我们看到输入表和输出表,

我想要类似的

group by (user,id,action) then i need min(date) and corresponding collection value

谁能提出一个想法?

【问题讨论】:

    标签: sql datetime greatest-n-per-group presto amazon-athena


    【解决方案1】:

    一种选择是使用子查询进行过滤:

    select t.*
    from mytable t
    where t.date = (
        select min(t1.date) from mytable t1 where t1.user = t.user
    )
    

    另一种解决方案是使用窗口函数将具有相同user 的记录按date 排序,然后使用该信息过滤结果集:

    select *
    from (
        select t.*, row_number() over(partition by user order by date) rn
        from mytable t
    ) t
    where rn = 1
    

    【讨论】:

      猜你喜欢
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 2017-12-18
      相关资源
      最近更新 更多