我有一个这样的数据集。
对于每个SessionID和VisitID,它应该基于date_time列进行排序,并向我提供“第一类别”和“最后类别”。
我使用了以下代码
rank() OVER( PARTITION BY SessionID
, VisitID
ORDER by
date_Time DESC ) as click_rank_last
where click_rank_last = 1
获取最后一个类别。但是我需要的是在单个查询中获得第一个和最后一个查询,同时对数据库的影响最小,因为数据量巨大且查询成本很高。
需要最优化的查询!
答案 0 :(得分: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