本文主要是介绍ROW_NUMBER() OVER()、RANK() OVER()、DENSE_RANK() OVER()的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
工作中需要用到对多列分组并排序后的组内数据。这时候就需要用ROW_NUMBER() OVER()啦。
语法格式:row_number() over(partition by 分组列 order by 排序列 desc)
注意:over()里头的分组以及排序的执行晚于sql中 where 、group by、 order by 的执行。
SELECT l.purchase_order,l.po_line_number,h.CREATE_TIME,
row_number() over(partition by l.purchase_order, l.po_line_number ORDER BY h.CREATE_TIME desc) rn
FROM header h,Line l where h.id= l.id
扩展:RANK() OVER()、DENSE_RANK() OVER()
RANK()
1 2 3 |
|
DENSE_RANK()
1 2 3 |
|
这篇关于ROW_NUMBER() OVER()、RANK() OVER()、DENSE_RANK() OVER()的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!