Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan semula Item N Terlaris setiap Kedai Menggunakan Pertanyaan SQL Tunggal?

Bagaimana untuk Mendapatkan semula Item N Terlaris setiap Kedai Menggunakan Pertanyaan SQL Tunggal?

DDD
DDDasal
2024-12-21 12:50:11306semak imbas

How to Retrieve the Top N Sold Items per Store Using a Single SQL Query?

Pertanyaan SQL untuk Mendapatkan N Item Teratas Yang Dijual Setiap Kumpulan

Dalam soalan ini, pengguna mencari pertanyaan SQL untuk mendapatkan 5 teratas terjual item untuk setiap kedai dalam satu pertanyaan. Jadual yang disediakan, Jualan, mengandungi lajur seperti UPCCode, SaleDate, StoreId dan TotalDollarSales.

Untuk mencapai hasil yang diinginkan, kami boleh menggunakan gabungan subkueri dan pembahagian dalam satu pertanyaan SQL. Berikut ialah pecahan terperinci:

  1. Subquery untuk Mengira Jumlah Jualan bagi Setiap UPCCode:

    • Kira jumlah TotalDollarSales untuk setiap unik gabungan StoreId dan UPCCode.
  2. Tambahkan Nombor Baris pada Hasil Pembahagian:

    • Pecahkan hasil mengikut StoreId dan tetapkan nombor baris kepada setiap baris dalam tertib menurun TotalDollarSales.
  3. Pilih N Item Teratas untuk Setiap Kedai:

    • Tapis keputusan untuk memasukkan hanya baris di mana baris nombor adalah kurang daripada atau sama dengan 5. Ini akan memberikan 5 item teratas untuk setiap satu kedai.
  4. Dapatkan Keputusan Akhir:

    • Pilih StoreId, UPCCode dan TotalDollarSales untuk 5 item teratas untuk setiap satu kedai.

Berikut ialah pertanyaan SQL lengkap yang menggabungkan langkah-langkah ini:

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;

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan semula Item N Terlaris setiap Kedai Menggunakan Pertanyaan SQL Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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