sql分组排序mysql_SQL分组排序

面试的时候,只要这个工作要求SQL能力,面试官必然会问SQL怎么实现分组排序?刚开始,我一直以为是没有分组排序这个函数的。直到第一次去面试腾讯时,笔试题目中有一题是分组排序,我写得是变量赋值排序。面试官一脸懵逼的看着我,又问道有什么直接的函数吗?这一问,真把我难住了。这位面试官比较nice,很耐心的跟我说:你回去查查这个三个函数的用法及区别rank()over()、row_number()over()、dense_rank()over()

1.row_number()over()分组排序功能:

在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where group by order by 的执行。 partition by 用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,而聚合函数一般只有一个反映统计值的记录。

例:employee,根据部门分组排序

select empno,workdept,salary,row_number()over(partition by workdept order by salary desc)

as rank from data.employee

941ddef1c3a8

2.rank()over()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)

select workdept,salary,rank()over(partition by workdept order by salary de

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值