Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencari Item N Teratas yang Dijual di Setiap Kedai Menggunakan Pertanyaan SQL Tunggal?

Bagaimana untuk Mencari Item N Teratas yang Dijual di Setiap Kedai Menggunakan Pertanyaan SQL Tunggal?

Mary-Kate Olsen
Lepaskan: 2024-12-29 09:48:11
asal
739 orang telah melayarinya

How to Find the Top N Items Sold at Each Store Using a Single SQL Query?

Pertanyaan SQL untuk Menentukan N Item Teratas untuk Setiap Kedai

Untuk mencari N item teratas yang dijual untuk setiap kedai dalam satu pertanyaan, kami boleh memanfaatkan gabungan fungsi GROUP BY dan ROW_NUMBER(). Berikut ialah penyelesaian yang komprehensif:

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
)
SELECT StoreID, UPCCode, TotalDollarSales = tds
FROM s
WHERE rn <= 5
ORDER BY StoreID, TotalDollarSales DESC;
Salin selepas log masuk

Memahami Pertanyaan

  • Subkueri s2 mengira jumlah jualan (tds) untuk setiap item (UPCCode) dalam setiap store (StoreID).
  • Pertanyaan luar, menggunakan pernyataan WITH, mencipta ungkapan jadual (CTE) bernama s. Dalam CTE ini, ROW_NUMBER() digunakan untuk meletakkan kedudukan item dalam setiap kedai berdasarkan jumlah jualan dalam tertib menurun (DESC).
  • Pertanyaan akhir memilih 5 item teratas (dengan rn kurang daripada atau sama dengan 5) untuk setiap kedai, mengisih keputusan mengikut ID kedai dan jumlah jualan dalam susunan menurun.

Pendekatan ini mendapatkan semula dengan cekap item terlaris untuk setiap kedai dalam satu pernyataan SQL, mengelakkan keperluan untuk berbilang pertanyaan atau operasi UNION yang tidak cekap.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Item N Teratas yang Dijual di Setiap Kedai Menggunakan Pertanyaan SQL Tunggal?. 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