Heim >Datenbank >MySQL-Tutorial >Wie rufe ich mit einer einzigen SQL-Abfrage die N-besten verkauften Artikel pro Geschäft ab?

Wie rufe ich mit einer einzigen SQL-Abfrage die N-besten verkauften Artikel pro Geschäft ab?

DDD
DDDOriginal
2024-12-21 12:50:11258Durchsuche

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

SQL-Abfrage zum Abrufen der Top-N-verkauften Artikel pro Gruppe

In dieser Frage sucht ein Benutzer nach einer SQL-Abfrage, um die Top-5-verkauften Artikel abzurufen Artikel für jedes Geschäft in einer einzigen Abfrage. Die bereitgestellte Tabelle Sales enthält Spalten wie UPCCode, SaleDate, StoreId und TotalDollarSales.

Um das gewünschte Ergebnis zu erzielen, können wir eine Kombination aus Unterabfragen und Partitionierung innerhalb einer einzelnen SQL-Abfrage verwenden. Hier ist eine detaillierte Aufschlüsselung:

  1. Unterabfrage zur Berechnung der Summe der Verkäufe für jeden UPC-Code:

    • Berechnen Sie die Summe der TotalDollarSales für jeden einzelnen Kombination aus StoreId und UPCCode.
  2. Zeilennummer zu partitionierten Ergebnissen hinzufügen:

    • Partitionieren Sie die Ergebnisse nach StoreId und weisen Sie eine Zeilennummer zu jede Zeile in absteigender Reihenfolge TotalDollarSales.
  3. Wählen Sie die Top-N-Artikel für jedes Geschäft aus:

    • Filtern Sie die Ergebnisse, um nur Zeilen einzuschließen, in denen die Zeile Die Anzahl ist kleiner oder gleich 5. Dadurch werden jeweils die Top 5 Elemente angezeigt Store.
  4. Endgültige Ergebnisse abrufen:

    • Wählen Sie StoreId, UPCCode und TotalDollarSales für die Top-5-Artikel aus jedes Geschäft.

Hier ist die vollständige SQL-Abfrage das diese Schritte kombiniert:

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;

Das obige ist der detaillierte Inhalt vonWie rufe ich mit einer einzigen SQL-Abfrage die N-besten verkauften Artikel pro Geschäft ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn