ZBLOG

mysql 5.7 实现分组row_number

在 MySQL 5.7 中,可以使用子查询和变量来实现分组 row_number。

以下是具体的步骤:

  1. 使用子查询获取每个分组中的行数和排名。
  1. SELECT t1.id,
  2. t1.name,
  3. t1.score,
  4. (SELECT COUNT(*)
  5. FROM table_name t2
  6. WHERE t2.name = t1.name AND t2.score > t1.score) + 1 AS rank,
  7. (SELECT COUNT(*)
  8. FROM table_name t3
  9. WHERE t3.name = t1.name) AS group_count
  10. FROM table_name t1;

在此查询中,我们使用了两个子查询。第一个子查询计算了每个分组中比当前行分数高的行数,并将其与 1 相加得到当前行的排名。第二个子查询计算了每个分组中的行数。

  1. 将子查询结果与原始表连接起来。
  1. SELECT t1.id,
  2. t1.name,
  3. t1.score,
  4. t2.rank,
  5. t2.group_count
  6. FROM table_name t1
  7. JOIN (SELECT t4.name,
  8. (SELECT COUNT(*)
  9. FROM table_name t5
  10. WHERE t5.name = t4.name AND t5.score > t4.score) + 1 AS rank,
  11. (SELECT COUNT(*)
  12. FROM table_name t6
  13. WHERE t6.name = t4.name) AS group_count
  14. FROM table_name t4) t2
  15. ON t1.name = t2.name;

在此查询中,我们使用了一个子查询来计算排名和分组大小,然后将其与原始表连接起来。

注意:以上查询中的 table_name 应替换为实际表名。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=1888

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?