Requête SQL pour récupérer les N articles les plus vendus par groupe
Dans cette question, un utilisateur recherche une requête SQL pour récupérer les 5 meilleurs articles vendus articles pour chaque magasin en une seule requête. La table fournie, Sales, contient des colonnes telles que UPCCode, SaleDate, StoreId et TotalDollarSales.
Afin d'obtenir le résultat souhaité, nous pouvons utiliser une combinaison de sous-requêtes et de partitionnement au sein d'une seule requête SQL. Voici une répartition détaillée :
Sous-requête pour calculer la somme des ventes pour chaque code UPC :
Ajouter un numéro de ligne aux résultats partitionnés :
Sélectionnez les N meilleurs articles pour chaque magasin :
Récupérer les résultats finaux :
Voici la requête SQL complète qui combine ces étapes :
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;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!