在redshift上的SQL查询获取第一个和最后一个值

问题描述 投票:0回答:1

我有这样的数据集。

enter image description here

我需要写一个查询,它给我下面的输出enter image description here

对于每个SessionID和VisitID,它应该根据date_time列进行排序,并为我提供First Category和Last Category。

我使用了以下代码

 rank() OVER( PARTITION BY SessionID
            , VisitID

        ORDER by
            date_Time DESC ) as click_rank_last
where click_rank_last = 1

获得最后一个类别。但我需要的是在单个查询中获得第一个和最后一个,因为数据量很大并且查询成本很高,所以对数据库的影响最小。

需要最优的查询!

sql amazon-redshift amazon-redshift-spectrum
1个回答
2
投票

一种方法是:

select distinct
       sessionid,
       visitid,
       first_value(category) over (
            partition by sessionid, visitid
            order by date_time
            rows between unbounded preceding and unbounded following),
       last_value(category) over (
            partition by sessionid, visitid
            order by date_time
            rows between unbounded preceding and unbounded following)
from   tbl
© www.soinside.com 2019 - 2024. All rights reserved.