mysql patition by--分区函数

分区函数 patition by
group by是分组函数,partition by是分区函数

partition by并没有group by的汇总功能。
partition by统计的每一条记录都存在,而group by将所有的记录汇总成一条记录(类似于distinct EmpDepartment 去重)

相同点:
group by 后的聚合函数,partion by 后的order by 都是针对一个区,组 操作。
不同点:
group by 分组,最终只能显示一个组里的一条记录 
partition by 分区,能显示组里所有个体的记录,通过order by 在区内排序,窗口函数排序号, where筛选序号,最终显示一个组可有多条记录
两者用途不一样:
patition by主要用在排序函数里OVER(partition by... order by...)

窗口函数 OVER([partition by...] [order by...])两种用法

over()函数限制作用范围,单独使用表全部没有意义
中间要有partition by...或order by
一般都有:先分区然后再区中排序
OVER(partition by... order by...)

OVER(partition by... order by...)函数不能单独使用,必须跟在

加序号函数( ROW_NUMBER、DENSE_RANK、RANK、NTILE) 
或 5种聚合函数(SUM、MAX、MIN、AVG、COUNT)后边。

加序号函数row_number()、rank()和dense_rank()
加序号函数 over()中必须有order by排序

row_number()

row_number() OVER([partition by...] order by...)
为一个分区中的每行记录按顺序生成一个唯一的行号(生成行号)

rank()

相同的值会生成相同的序号,并且接下来的序号是不连序的(成绩排名)

dense_rank()

相同的值会生成相同的序号,并且接下来的序号连序(用的少)

聚合函数( ) OVER ( [ partition by 字段] [order by 字段])
partition by
字段】和【order by 字段】是可选择的

posted @   我的心儿  阅读(362)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示