ZBLOG

mysql 5.7 实现分组row_number

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

以下是具体的步骤:

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

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

  1. 将子查询结果与原始表连接起来。
SELECT t1.id, 
       t1.name, 
       t1.score, 
       t2.rank, 
       t2.group_count 
FROM   table_name t1 
       JOIN (SELECT t4.name, 
                    (SELECT COUNT(*) 
                     FROM   table_name t5 
                     WHERE  t5.name = t4.name AND t5.score > t4.score) + 1 AS rank, 
                    (SELECT COUNT(*) 
                     FROM   table_name t6 
                     WHERE  t6.name = t4.name) AS group_count 
             FROM   table_name t4) t2 
         ON t1.name = t2.name;

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

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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?