Cara menggunakan rank() over, dense_rank() over dan row_number() over dalam MySQL

PHPz
Lepaskan: 2023-05-26 19:55:29
ke hadapan
1571 orang telah melayarinya

Cara menggunakan rank() over, dense_rank() over dan row_number() over dalam MySQL

Untuk soalan di atas, jika anda tidak menggunakan fungsi yang digunakan kali ini, jawapannya adalah seperti berikut, jika MySQL anda tidak boleh menggunakan fungsi dalam artikel ini, anda boleh lulus logik tatabahasa berikut untuk penggantian.

SELECT t1.Score as Score, ( SELECT COUNT(DISTINCT t2.Score) FROM Scores t2 WHERE t2.Score >= t1.Score ) AS `Rank` 
FROM Scores t1 ORDER BY t1.Score DESC
Salin selepas log masuk

kedudukan() atas (logik perniagaan)

Fungsi: Kedudukan selepas mengetahui syarat yang ditetapkan jika sama, kedudukannya akan sama, dan kedudukan akan terhenti.

Fungsi ini boleh digunakan untuk kedudukan pelajar, di mana dua pelajar dengan markah yang sama akan diikat, dan pelajar seterusnya akan mengosongkan jawatan yang sepatutnya. Iaitu: 1 1 3 4 5 5 7

SELECT id, name, score, rank() over(ORDER BY score DESC) AS 'rank' FROM student
Salin selepas log masuk

Cara menggunakan rank() over, dense_rank() over dan row_number() over dalam MySQL

padat_peringkat() atas (logik perniagaan)

Fungsi: Ketahui yang ditentukan Mereka selepas syarat ditarafkan Jika syarat adalah sama, kedudukannya adalah tidak berterusan.

Nota: Ia mempunyai kesan yang sama seperti rank() over, bezanya dense_rank() over ranking adalah padat dan berterusan. Gunakan fungsi ini untuk menentukan kedudukan pelajar. Sekiranya skor yang sama, dua pelajar akan terikat untuk ranking, dan pelajar peringkat seterusnya akan ditentukan berdasarkan ranking seterusnya. Iaitu: 1 1 2 3 4 5 5 6

SELECT id, name, score, dense_rank() over(ORDER BY score DESC) AS 'rank' FROM student
Salin selepas log masuk

Cara menggunakan rank() over, dense_rank() over dan row_number() over dalam MySQL

row_number() over (logik perniagaan)

Fungsi: Cari keluar Kedudukan dilakukan selepas menyatakan syarat Jika syarat adalah sama, kedudukan akan berbeza, dan kedudukan akan tidak berterusan.

Walaupun nilai yang ditanya adalah sama, fungsi ini akan mengisih nilai tersebut secara berterusan tanpa mengambil kira sama ada nilai tersebut selari. Iaitu: 1 2 3 4 5 6

SELECT id, name, score, row_number() over(ORDER BY score DESC) AS 'rank' FROM student
Salin selepas log masuk

Cara menggunakan rank() over, dense_rank() over dan row_number() over dalam MySQL

Postskrip

Logik perniagaan dalam fungsi boleh menjadi rumit dan tidak terhad kepada ORDER BY, anda juga boleh menambah PARTITION BY.

### 分班级排名
SELECT id, name, score, class, row_number() over(PARTITION BY class ORDER BY score DESC) AS 'rank' 
FROM student
Salin selepas log masuk

Cara menggunakan rank() over, dense_rank() over dan row_number() over dalam MySQL

Atas ialah kandungan terperinci Cara menggunakan rank() over, dense_rank() over dan row_number() over dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan