Sering kali Anda perlu menemukan peringkat ke-n di MySQL. Misalnya menemukan peringkat ke-3 di kelas siswa. Siswa diberi peringkat berdasarkan skor. Untuk menemukan peringkat ke-n di MySQL, pertama-tama kita akan memberi peringkat pada record. Kemudian kita menyaring peringkat ke-n di MySQL. Berikut kueri yang dapat Anda gunakan. Ganti saja nama tabel skor dan nama kolom id, skor.
Temukan peringkat ke-n di MySQL berdasarkan nilai yang meningkat
Contoh:
CREATE TABLE score (id int, score int); INSERT INTO scores VALUES (1, 35),(2, 10),(3,30),(4,22),(5,20),(6,18),(7,36); Scores: +----+------+ | id | score| +----+------+ | 1 | 35 | | 2 | 10 | | 3 | 30 | | 4 | 22 | | 5 | 20 | | 6 | 18 | | 7 | 36 | +----+------+
Di sini kami menemukan rekor dengan peringkat 3 . Kueri berikut memberi peringkat catatan berdasarkan peningkatan skor. Kemudian menyaring catatan dengan peringkat 3:
SELECT * from ( SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score) WHERE rank = 3;
(SELECT @curRank := 0)
part memungkinkan inisialisasi variabel tanpa memerlukan perintah SET terpisah.
Result: +----+------+------+ | id | score| rank | +----+------+------+ | 5 | 20 | 3 | +----+------+------+ 1 row in set (0.0 sec)
Temukan peringkat ke-n di MySQL berdasarkan penurunan nilai
Jika Anda ingin menemukan peringkat ke-n di MySQL berdasarkan urutan penurunan skor, tambahkan saja kata kunci DESC dalam kueri. Di sini kami menemukan rekor dengan peringkat 3.
SELECT * from ( SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score DESC) WHERE rank=3;
Hasil:
+----+------+------+ | id | score| rank | +----+------+------+ | 3 | 30 | 3 | +----+------+------+ 1 row in set (0.0 sec)
Anda dapat menerapkan metode di atas untuk mendapatkan peringkat ke-n untuk semua jenis metrik seperti gaji, jumlah karyawan, dll.