1

我有一个这样的数据集。

在此处输入图像描述

我需要编写一个查询,它给我以下输出 在此处输入图像描述

对于每个 SessionID 和 VisitID,它应该根据 date_time 列进行排序,并为我提供第一个类别和最后一个类别。

我使用了以下代码

 rank() OVER( PARTITION BY SessionID
            , VisitID

        ORDER by
            date_Time DESC ) as click_rank_last
where click_rank_last = 1

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

需要最优化的查询!

4

1 回答 1

4

一种方法是:

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
于 2019-03-06T13:29:43.057 回答