2010-11-22 12 views
0

Ich habe diese Tabelle, die wie dieseSQL - Gruppe von Fragen

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`) 
) 

ich alle Einkäufe an einem bestimmten Tag zählen wollen sieht so habe ich diese SQL-Anweisung, die das tut

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

das gibt mir so etwas wie dieses

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

Da jeder Kauf ein Geschäft gebunden ist, ich habe mich gefragt, ob es eine Abfrage, dass wi 3 Spalten zu diesem resultset hinzufügen ll mit einer Zählung der Käufe, die in jedem Geschäft geschahen, um mich so etwas wie dieser

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 

Vielen Dank im Voraus!

Antwort

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

Dank! Das hat wirklich geholfen .... –

0

Vielleicht könnten Sie ROLLUP für diese, Besuche in der Dokumentation here