SQL - группировка по вопросам - PullRequest
0 голосов
/ 22 ноября 2010

У меня есть эта таблица, которая выглядит следующим образом

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

Я хочу подсчитать все покупки за определенный день, поэтому у меня есть SQL-оператор, который делает это

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

Этовозвращает мне что-то вроде этого

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

Поскольку каждая покупка связана с магазином, мне было интересно, есть ли запрос, который добавит 3 столбца к этому набору результатов с подсчетом покупок, которые произошли в каждом магазине, чтобыдай мне что-то вроде этого

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

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 22 ноября 2010
  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 голосов
/ 22 ноября 2010

Возможно, вы могли бы использовать ROLLUP для этого, посмотрите документацию здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...