Heim >Datenbank >MySQL-Tutorial >Wie rufe ich mit einer einzigen SQL-Abfrage die N-besten verkauften Artikel pro Geschäft ab?
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:
Unterabfrage zur Berechnung der Summe der Verkäufe für jeden UPC-Code:
Zeilennummer zu partitionierten Ergebnissen hinzufügen:
Wählen Sie die Top-N-Artikel für jedes Geschäft aus:
Endgültige Ergebnisse abrufen:
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!