2010-11-22 9 views
0

Je cette table qui ressemble à ceSQL - Groupe par les questions

CREATE TABLE `purchases` (
    `id` INT(10) NOT NULL AUTO_INCREMENT, 
    `totalAmount` INT(10) NOT NULL DEFAULT '0', 
    `storeId` INT(10) NOT NULL DEFAULT '0', 
    `purchaseDate` DATETIME NOT NULL, 
    PRIMARY KEY (`id`) 
) 

Je veux compter tous les achats un jour donné, donc j'ai cette instruction SQL qui fait que

SELECT DATE_FORMAT(purchaseDate, '%m-%d-%Y') AS date, COUNT(id) AS totalPurchases FROM purchases GROUP BY DATE(purchaseDate) 

cela me renvoie quelque chose comme ça

date  totalPurchases 
11-18-2010 5 
11-19-2010 10 
11-20-2010 10 

Étant donné que chaque achat est lié à un magasin, je me demandais s'il y a une requête wi ll ajouter 3 colonnes à ce ResultSet avec un compte d'achats qui se sont produits dans chaque magasin pour me donner quelque chose comme ça

date  totalPurchases  store1 store2 store3 
11-18-2010 5     2   1   2 
11-19-2010 10     4   1   5 
11-20-2010 10     3   4   3 

Merci à l'avance!

Répondre

3
SELECT DATE_FORMAT(purchaseDate, '%m-%d-%Y') AS date, 
     COUNT(*) AS totalPurchases, 
     SUM(IF(storeId = 1, 1, 0)) AS store1, 
     SUM(IF(storeId = 2, 1, 0)) AS store2, 
     SUM(IF(storeId = 3, 1, 0)) AS store3 
    FROM purchases 
GROUP BY DATE(purchaseDate) 
+0

Merci! Cela a vraiment aidé ... –

0

Peut-être que vous pourriez utiliser ROLLUP pour cela, consultez la documentation here