序列函数
ntile
sql
# 获取一个表中,所有消费记录,每个人后50%的消费记录
with t as (
select *,ntile(2) over(partition by name) xh from t_order
)
select * from t where xh = 2
lag & lead
sql
# 获取上一次的消费记录
select *,lag(orderdate,1,1900-01-01) over(partition by name order by orderdate) from t_order
sql
# 5分钟,点击100次的用户
select id,dt,lag(dt,100),
排名函数
1、row_numer() 没有并列
2、rank() 存在并列,存在空位
3、dense_rank() 存在并列,不存在空位