oracle partition by group by,详解partition by和group by对比

来源:这里教程网 时间:2026-03-03 17:45:31 作者:

    

1. group by是分组函数,partition by是分析函数(然后像sum()等是 聚合函数);           

from > where > group by > having > order by    

3.partition by相比较于group by,能够在保留全部数据的基础上,只对其中某些字段做分组排序(类似excel中的操作),而group by则只保留参与分组的字段和聚合函数的结果(类似excel中的pivot)。

3.partition by相比较于group by,能够在保留全部数据的基础上,只对其中某些字段做分组排序(类似excel中的操作),而group by则只保留参与分组的字段和聚合函数的结果(类似excel中的pivot)。

group by不允许group by以外的列出现在查询里, partition by允许所有列出现在查询里。

row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。 与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪劣rownum然后再进行排序,而row_number()在包含排序从句后是先排序再计算行号码。

2.1 跟rownum 类似,row_number() 也是在查询结果中插入一个伪列,用以显示每一行的序列,但是row_number()不可单独使用,一般结合over(<window specification>)一起使用

使用row_number()时RN的值按1,2,3,4 顺序升序排列,不会重复

使用rank()时,对于值相同的行RN的值也相同,比如四行数据的第二行和第三行相同,那么RN的值是:1,2,2,4 推荐阅读: https://blog.csdn.net/weixin_42683394/article/details/116437450 推荐阅读: https://blog.csdn.net/shandeai520/article/details/103350808?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0-103350808-blog-83980293.pc_relevant_aa&spm=1001.2101.3001.4242.1&utm_relevant_index=2

相关推荐