Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih Dua Baris Teratas untuk Setiap Kumpulan dalam SQL?

Bagaimana untuk Memilih Dua Baris Teratas untuk Setiap Kumpulan dalam SQL?

Mary-Kate Olsen
Lepaskan: 2024-12-31 15:13:13
asal
570 orang telah melayarinya

How to Select the Top Two Rows for Each Group in SQL?

Memilih Dua Baris Teratas dalam Setiap Kumpulan SQL

Dalam SQL, tugas biasa adalah untuk mendapatkan hanya baris teratas untuk setiap kumpulan. Walau bagaimanapun, fungsi pengagregatan standard untuk pengelompokan (seperti MAX() dan MIN()) hanya membenarkan pemilihan nilai tertinggi atau terendah.

Pertanyaan untuk Memilih Dua Markah Teratas bagi setiap Nama:

Untuk menangani cabaran ini, pertanyaan yang lebih kompleks diperlukan. Berikut ialah contoh cara memilih dua markah teratas bagi setiap nama dalam jadual yang disediakan:

SELECT *
FROM   test s
WHERE 
        (
            SELECT  COUNT(*) 
            FROM    test  f
            WHERE f.name = s.name AND 
                  f.score >= s.score
        ) <= 2;
Salin selepas log masuk

Penjelasan:

  • Pertanyaan luar (PILIH * ...) mendapatkan semula semua baris daripada jadual ujian.
  • Subkueri (SELECT COUNT(*) ...) menentukan berapa banyak rekod wujud untuk setiap nama dalam jadual ujian dengan skor yang sama atau lebih besar daripada skor baris semasa.
  • Klausa WHERE kemudian menapis baris dalam pertanyaan luar dengan memastikan kiraan daripada subkueri adalah kurang daripada atau sama dengan 2.

Contoh Output:

Pertanyaan di atas mengembalikan output berikut:

NAME    SCORE
-----------------
willy       2
willy       3
zoe         5
zoe         6
Salin selepas log masuk

Output ini termasuk dua markah teratas untuk setiap nama dalam jadual, seperti yang diminta.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Dua Baris Teratas untuk Setiap Kumpulan dalam SQL?. 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