hzk20220818

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排序
image

row_number()

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

rank()

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

dense_rank()

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

聚合函数( ) OVER ( [ partition by 字段] [order by 字段])

partition by
字段】和【order by 字段】是可选择的

posted on   hzk-shzdx-university  阅读(4771)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示