Postgresql窗口函数(二)

在上一篇里,主要窗口函数的基本用法。

在这一篇中,我们来看看postgresql除了聚合函数之外还支持哪些窗口函数吧。

row_number()

返回分组后的行号。注意到虽然emp_no为9和11的员工,salary相同,但row_number返回的行号仍然连续。

《Postgresql窗口函数(二)》

rank()

返回分组后的行号,但和row_number不同的是,如果对比值重复时,行号重复且会发生间断。

《Postgresql窗口函数(二)》

dense_rank()

返回分组后的行号,但和row_number和rank函数都不同,当对比值重复时行号重复但不间断。

《Postgresql窗口函数(二)》

percent_rank()

返回当前行的相对排名,计算在分组中的比例(rank-1)/(总记录数-1),需要对比rank函数理解。

《Postgresql窗口函数(二)》

cume_dist() 

返回当前行的相对排名:(前面的行数或与当前行相同的行数)/(总行数)

《Postgresql窗口函数(二)》

ntile(分组数量)

让所有记录尽可以的均匀分布。

《Postgresql窗口函数(二)》

lag(value any [, offset integer [, default any ]])

返回偏移值,offset integer是偏移值,正数时前值,负数时后值,没有取到值时用default代替,默认偏移量为0, 默认值为null

《Postgresql窗口函数(二)》

lead(value any [, offset integer [, default any ]])

返回偏移值,offset integer是偏移值,正数时取后值,负数时取前值,没有取到值时用default代替

《Postgresql窗口函数(二)》

first_value(value any)

返回分组第一个值

《Postgresql窗口函数(二)》

last_value(value any)

返回分组最后一个值

《Postgresql窗口函数(二)》

nth_value(value any, nth integer)

返回分组的第n个值,如果没有则为null

《Postgresql窗口函数(二)》

以上就是postgres支持的窗口函数,大家可以根据需要选择使用,特别在写复杂查询时,选择合适的窗口函数可以起到意想不到的效果。

    原文作者:lorispy
    原文地址: https://www.jianshu.com/p/270cec788e87
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞