需要计算历史分区数据,即每个分区往前取时间最大值
row_number() over(partition by t.id order by t.created_date desc range between unbounded preceding and current row )
row_number 不能指定 时间范围排序吗
row_number 不是聚合函数,排序函数都不支持
sum ,max,等等都可以用 range between
1.单纯看开窗函数里面的子句:
你这个windowing子句range between unbounded preceding and current row,其实就是order by 的默认windowing子句,从分前不指定到当前列。
2. windowing字句的情况说明以及作用:
一般我们要限制开窗大小,windowing子句更多是行限制row between ,或者范围限制range between,且范围限制仅对数值、日期类型有效,这里对range between举例:
①range between unbounded preceding and unbounded fllowing 这种不限范围;
②range between current row and unbounded fllowing当前行至排序后的所有行;
③range between 1 preceding and 1 fllowing 按照排序下当前行的前一行至当前行的下一行;
windowing字句必须跟在order by 后面,所以可以看到range between下and的前后限制了取数的范围,row_number是作为一个分析排名函数,作为一个排名使用,是使用不了这个windowing字句的(或者说叫不能全部使用),具体说明一下就是我分析是需要按照某个分组条件进行order by 分析排名,但是如果把上面第②第③个windowing字句放进row_number函数里,那变成了什么意思呢,这明显就是有问题的,这里需要理解一下。
题主如需使用分析函数,可以具体说明一下业务需求,我们继续探讨。