Rumah > pangkalan data > tutorial mysql > Bagaimanakah saya boleh mengambil baris N atas untuk setiap kumpulan dalam SQL menggunakan fungsi tetingkap?

Bagaimanakah saya boleh mengambil baris N atas untuk setiap kumpulan dalam SQL menggunakan fungsi tetingkap?

Susan Sarandon
Lepaskan: 2025-01-25 11:51:37
asal
671 orang telah melayarinya

How Can I Retrieve the Top N Rows for Each Group in SQL Using Window Functions?

Gunakan fungsi tetingkap untuk mendapatkan garis depan n bagi setiap kumpulan

Artikel ini memperkenalkan cara menggunakan fungsi tetingkap SQL untuk mengekstrak garis N secara efisien dari data kumpulan. Ini sangat praktikal dalam banyak senario analisis data.

MySQL 8 dan versi yang lebih tinggi menyediakan tiga fungsi tetingkap biasa:

,

dan ROW_NUMBER. Fungsi ini memperuntukkan nilai untuk setiap baris, supaya kita memilih beberapa baris pertama dalam setiap kumpulan. RANK DENSE_RANK Contoh Data:

Dengan mengandaikan kami mempunyai set data berikut:

Hasil output dari tiga fungsi tingkap perbandingan:

Keterangan fungsi:

  • : Nombor pesanan unik diberikan untuk setiap baris dalam setiap kumpulan, bermula dari 1. Sebagai contoh, nilai ROW_NUMBER dalam catid adalah 1 hingga 5. p01 row_number

  • : Semua kedudukan diperuntukkan untuk setiap baris setiap kumpulan, dan nilai yang sama adalah sama. Sebagai contoh, nilai RANK adalah 1 hingga 5 (walaupun beberapa nilai diulang). catid p01 rank

  • : Sama seperti
  • , tetapi kedudukan nilai yang sama berterusan dan tidak ada jurang. Sebagai contoh, nilai

    adalah 1 hingga 5 (walaupun beberapa nilai diulang). DENSE_RANK RANK catid Pilih Fungsi Tetingkap Kanan: p01 dense_rank

    Fungsi tetingkap yang bergantung kepada keperluan khusus anda dan definisi "garis depan n". Jika anda perlu mempunyai satu -satunya ranking setiap baris, gunakan
  • ;

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengambil baris N atas untuk setiap kumpulan dalam SQL menggunakan fungsi tetingkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan