mysql中GROUP BY和 DISTINCT在去重和计数方面的相似与区别(排名问题为例)

GROUP BY和 DISTINCT作用的相似与区别(去重和计数)

问题来源

Group bydistinctcount函数的组合,都可以实现对某一列的重复值消除的作用。
这里以LeetCode上的一个排名练习为例,来证明一下二者的相似性。

mysql> select * from Scores;

+----+-------+
| Id | Score |
+----+-------+
|  1 |  3.50 |
|  2 |  3.65 |
|  3 |  4.00 |
|  4 |  3.85 |
|  5 |  4.00 |
|  6 |  3.65 |
+----+-------+

这里设置3种排名规则
规则1:相同分数取相同排名,相同排名后的下一名按名次加1,排名应连续
规则2:相同分数取相同排名,相同排名后的下一名按人数进行排名,排名不连续
规则3:相同分数取不同排名,不分先后

规则1

思路:

  1. 建立score列和对应的rank列,按score列降序排列
  2. 其中rank列以子查询的方式表示,选取大于对应分数的列应用count函数

count(distinct)解法:

mysql> select s1.Score as score,
    -> (select cou
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值