Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Item N Teratas untuk Setiap Kumpulan Menggunakan Klausa SQL GROUP BY?

Bagaimana untuk Mendapatkan Item N Teratas untuk Setiap Kumpulan Menggunakan Klausa SQL GROUP BY?

Barbara Streisand
Lepaskan: 2024-12-19 07:24:13
asal
873 orang telah melayarinya

How to Get the Top N Items for Each Group Using SQL's GROUP BY Clause?

N Item Teratas untuk Setiap Kumpulan Menggunakan Kumpulan SQL Oleh

Dalam pangkalan data, klausa GROUP BY digunakan untuk mengumpulkan baris dalam jadual berdasarkan nilai sepunya dalam satu atau lebih lajur. Apabila digabungkan dengan fungsi agregat seperti SUM(), ia boleh digunakan untuk mengira statistik bagi setiap kumpulan. Walau bagaimanapun, dalam beberapa kes, mungkin perlu untuk mengekstrak item N teratas dalam setiap kumpulan.

Satu pendekatan untuk masalah ini ialah menggunakan subkueri untuk mengira jumlah jualan bagi setiap item di setiap kedai dan kemudian menentukan kedudukan mereka dalam setiap kedai. Ini boleh dicapai menggunakan fungsi ROW_NUMBER() untuk menjana kedudukan bagi setiap baris, dibahagikan mengikut kedai:

;WITH s AS 
(
  SELECT StoreID, UPCCode, tds, rn = ROW_NUMBER()
  OVER (PARTITION BY StoreID ORDER BY tds DESC)
  FROM 
  (
    SELECT StoreID, UPCCode, tds = SUM(TotalDollarSales)
    FROM Sales
    GROUP BY StoreID, UPCCode
  ) AS s2
)
Salin selepas log masuk

Subkueri mencipta jadual baharu dengan tiga lajur: StoreID, UPCCode dan tds (jumlah jualan dolar). Ia juga termasuk lajur ranking rn, yang memberikan setiap baris kedudukan dalam kedainya. Kedudukan dijana menggunakan fungsi ROW_NUMBER() dan dipisahkan oleh lajur StoreID.

Untuk mengekstrak 5 item terjual teratas bagi setiap kedai, pertanyaan berikut boleh digunakan:

SELECT StoreID, UPCCode, TotalDollarSales = tds
FROM s
WHERE rn <= 5
ORDER BY StoreID, TotalDollarSales DESC;
Salin selepas log masuk

Pertanyaan ini memilih semua baris daripada jadual s di mana nilai rn adalah kurang daripada atau sama dengan 5. Keputusan diisih mengikut tertib menurun mengikut TotalDollarSales dalam setiap kedai. Akibatnya, output akan mengandungi 5 item terjual teratas untuk setiap kedai dalam jadual Jualan. Kaedah ini menggabungkan penggunaan GROUP BY, fungsi agregat dan pemeringkatan untuk mendapatkan semula data yang diminta dengan cekap dalam satu pertanyaan.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Item N Teratas untuk Setiap Kumpulan Menggunakan Klausa SQL GROUP BY?. 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