开窗函数over(),给每条数据开窗,配合函数使用,比如count(*),row_number()
row_number() over(partition by column_1 order by column_2)
partition by表示根据column_1进行分组,order by表示根据column_2在column_1的分组下进行排序, 其中row_number() 表示会为排好序的每一行新增连续的行号。不同于rank(),rank()方法会为每行增加行号,但是如果遇到排名相同的行,会打上相同的排名,而且接下来的行序号是不连续的。比如1,2,2,4.
常用的row_number()效果如下:
sql:
select
order_id
,item_id
,row_number() over(partition by order_id order by item_id) rank
from app.app_crm_order_base_wide
where dt = '$now.delta(1).date'
limit 100
结果:
2021-08-10更新
获取某销售当前拜访记录的上一次拜访记录(下一次用lead()参数与lag()相同)
select
name
,visit_id
,visit_time
,lag(visit_time,1,'1970-01-01') over(distribute by name sort by visit_id)
from visit_table;