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

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

Patricia Arquette
Lepaskan: 2024-12-29 11:05:11
asal
598 orang telah melayarinya

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

Mendapatkan Dua Baris Teratas untuk Setiap Kumpulan dalam SQL

Pertanyaan SQL membolehkan pengguna mengekstrak data tertentu daripada jadual, tetapi bagaimana jika anda memerlukan untuk memilih dua baris teratas bagi setiap kumpulan? Senario ini boleh dihadapi apabila anda ingin menganalisis rekod pemarkahan tertinggi atau mendapatkan berbilang nilai dalam kumpulan.

Mari kita pertimbangkan jadual berikut sebagai contoh:

NAME SCORE
willy 1
willy 2
willy 3
zoe 4
zoe 5
zoe 6

Untuk mendapatkan semula dua markah tertinggi untuk setiap nama, kami boleh menggunakan pertanyaan SQL berikut:

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

Begini caranya pertanyaan berfungsi:

  • Pertanyaan luar (PILIH * DARI ujian s) memilih semua baris daripada jadual ujian.
  • Pertanyaan dalam, yang disertakan dalam kurungan, mengira kiraan baris dalam jadual ujian dengan nama yang diberikan dan skor lebih besar daripada atau sama dengan skor baris semasa (f.skor >= s.score).
  • Klausa WHERE pertanyaan luar menapis baris berdasarkan kiraan daripada pertanyaan dalam. Hanya baris dengan kiraan kurang daripada atau sama dengan 2 dipilih. Ini memastikan kami mendapat dua markah teratas untuk setiap kumpulan.
  • Output yang dijangkakan untuk pertanyaan ini adalah seperti berikut:

    NAME SCORE
    willy 2
    willy 3
    zoe 5
    zoe 6

    Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan 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