How to Perform Grouped Ranking in MySQL?
Jan 17, 2025 pm 07:41 PMDetailed explanation of MySQL group ranking
Database administrators often need to sort and rank grouped data. For example, a student performance table, containing class and student information as well as grades, needs to be grouped by class and rank student performance in each class.
MySQL can achieve group ranking through the following methods:
SELECT id_student, id_class, grade, @student:=CASE WHEN @class = id_class THEN @student+1 ELSE 0 END AS rn, @class:=id_class AS clset FROM (SELECT @student:= -1, @class := -1) AS init_vars, -- 初始化变量 (SELECT * FROM mytable ORDER BY id_class, grade DESC -- 按班级和成绩降序排序 ) AS t
This query works like this:
-
Variable initialization: Use subquery
(SELECT @student:= -1, @class := -1) AS init_vars
to initialize user-defined variables@student
and@class
to -1. -
Grouped Iteration: The query selects data from a temporary table
t
that has been sorted byid_class
andgrade
in descending order. -
Rank Calculation: The
CASE
statement calculates the rank (rn) of each student based on the currentid_class
and the previous@class
stored inid_class
. Ifid_class
changes,@student
is reset to 0; otherwise,@student
is incremented. -
Update class variable :
@class
is updated to the current value ofid_class
for the next iteration.
The query results will be a list of students in each class, sorted by their grades in descending order, and sorted by their rank in the class. This method efficiently performs grouped ranking, allowing you to easily retrieve sorted and ranked data in complex scenarios involving grouped data. Note that the sorting basis here is grade
descending order, and the sorting field and order can be adjusted according to actual needs.
The above is the detailed content of How to Perform Grouped Ranking in MySQL?. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Reduce the use of MySQL memory in Docker

How do you alter a table in MySQL using the ALTER TABLE statement?

How to solve the problem of mysql cannot open shared library

What is SQLite? Comprehensive overview

Run MySQl in Linux (with/without podman container with phpmyadmin)

How do I secure MySQL against common vulnerabilities (SQL injection, brute-force attacks)?

Running multiple MySQL versions on MacOS: A step-by-step guide

How do I configure SSL/TLS encryption for MySQL connections?
