Dina iki aku nemokake tugas ing ngisor iki nalika nggarap proyek pelanggan: Coba "panganggo" tabel SQL kanthi kolom "id" lan "skor" lan nemtokake rangking kabeh pangguna adhedhasar "skor" ing pangguna entuk rangking sing padha karo skor sing padha. Tugas iki bisa ditanggulangi kanthi intuisi lan gampang kanthi nggunakake variabel sing ditemtokake pangguna .
CREATE TABLE
user(id INT, score INT);
INSERT INTO
user(id, score)
VALUES
(1, 10), (2, 40), (3, 55), (4, 10), (5, 5), (6, 20), (7, 30), (8, 70), (9, 30)
Nggunakake rong variabel bisa ngatasi iki kanthi gampang
SET @score_prev = NULL;
SET @cur_rank = 0;
SELECT id, score, CASE
WHEN @score_prev = score THEN @cur_rank
WHEN @score_prev := score THEN @cur_rank := @cur_rank + 1
END AS rank
FROM user
ORDER BY score DESC
lan sampeyan entuk output sing dikarepake
+--------+-----------+----------+ | *id* | *score* | *rank* | | 8 | 70 | 1 | | 3 | 55 | 2 | | 2 | 40 | 3 | | 7 | 30 | 4 | | 9 | 30 | 4 | | 6 | 20 | 5 | | 1 | 10 | 6 | | 4 | 10 | 6 | | 5 | 5 | 7 | +--------+-----------+----------+