如何从配置单元中的记录中获取第二个最后日期?

jfewjypa  于 2021-06-28  发布在  Hive
关注(0)|答案(2)|浏览(206)

我有一张这样的table:

member        dato
    696382      2016-06-21
    35546232    2016-02-01
    9001107     2013-09-23
    40310785    2014-07-18
    3802508     2015-06-21
    74376545    2016-01-11
    14969202    2014-12-08
    17495001    2015-09-01
    17238917    2016-11-16

日期是会员购买产品的日期,从2015年1月1日到昨天。我想得到一个包含三列的新表:member、dato、dato\u second。拿督秒是最接近拿督的日期。例如,17238917在历史上除了“2016-11-16”之外还有三个数据:“2016-11-10”、“2015-03-27”,新记录将是17238917、“2016-11-16”、“2016-11-10”。那么如何得到新table呢?

ozxc1zmp

ozxc1zmp1#

这就是你要找的

select  member
       ,dato
       ,lag (dato) over (partition by member order by dato) as prev_dato            

from   mytab
uxhixvfz

uxhixvfz2#

嗯,我认为条件聚合和 row_number() 是最简单的解决方案:

select member,
       max(case when seqnum = 1 then dato end) as dato,
       max(case when seqnum = 2 then dato end) as dato_1
from (select t.*,
             row_number() over (partition by member order by dato desc) as seqnum
      from t
     ) t
group by member;

相关问题