程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在MySQL中执行分组排名大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在MySQL中执行分组排名?

开发过程中遇到如何在MySQL中执行分组排名的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在MySQL中执行分组排名的解决方法建议,希望对你解决如何在MySQL中执行分组排名有所启发或帮助;
SELECT ID_student, ID_class, grade,
   @student:=CASE WHEN @class <> ID_class THEN 0 ELSE @student+1 END AS rn,
   @class:=ID_class AS clset
FROM
  (SELECT @student:= -1) s,
  (SELECT @class:= -1) c,
  (SELECT *
   FROM my@R_403_5991@
   ORDER BY ID_class, ID_student
  ) t

这以非常简单的方式起作用:

  1. 初始查询按ID_class第一,ID_student第二顺序排序。
  2. @student@class初始化为-1
  3. @class用于测试是否输入下一组。如果的先前值ID_class(存储在中@class)不等于当前值(存储在中ID_class),则将@student其清零。否则增加。
  4. @class分配了新值ID_class,并将在下一行的第3步的测试中使用该值。

解决方法

所以我有一张桌子,如下所示:

ID_stuDENT | ID_CLASS | GRADE
-----------------------------
   1       |    1     |  90
   1       |    2     |  80
   2       |    1     |  99
   3       |    1     |  80
   4       |    1     |  70
   5       |    2     |  78
   6       |    2     |  90
   6       |    3     |  50
   7       |    3     |  90

然后,我需要对它们进行分组,排序和排序以给出:

ID_stuDENT | ID_CLASS | GRADE | RANK
------------------------------------
    2      |    1     |  99   |  1
    1      |    1     |  90   |  2
    3      |    1     |  80   |  3
    4      |    1     |  70   |  4
    6      |    2     |  90   |  1
    1      |    2     |  80   |  2
    5      |    2     |  78   |  3
    7      |    3     |  90   |  1
    6      |    3     |  50   |  2

现在,我知道您可以使用temp变量进行排名,例如此处,但是如何对分组集进行排名呢?感谢您的见解!

@H_618_62@

大佬总结

以上是大佬教程为你收集整理的如何在MySQL中执行分组排名全部内容,希望文章能够帮你解决如何在MySQL中执行分组排名所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。