2016-05-10 4 views
1

Как суммировать столбец с каждого диапазона дат.MySQL SUM Column From Date Ranges

Мне нужно суммировать столбец цены &, в результате чего они основаны на строках даты.

В этом случае я выбран Order_ID для и смотрите таблицу ниже.

Вот это заказы таблица у меня есть:

id  order_id  price  price_disc  date_transaction 
1  39    537   25    2014-03-28 11:44:40 
2  39    323   0    2014-03-28 16:12:42 
3  38    309   11    2014-03-29 15:47:48 
4  39    223   16    2014-03-29 19:22:28 
5  37    304   19    2014-03-30 23:31:34 
6  38    109   7    2014-03-31 09:12:16 
7  38    223   0    2014-03-31 17:00:35 
8  38    116   9    2014-04-01 20:32:27 
9  38    296   0    2014-04-02 16:45:00 
10  39    482   20    2014-04-03 12:42:03 
11  39    371   12    2014-04-03 20:02:10 
12  36    293   13    2014-04-03 21:09:45 
13  39    299   0    2014-04-03 23:28:10 
14  39    403   22    2014-04-04 08:06:13 

Я хочу, чтобы результат как это:

date_transaction total_price  total_price_disc 
2014-03-28   860    25 
2014-03-29   223    16 
2014-03-30   0    0 
2014-03-31   0    0 
2014-03-01   0    0 
2014-03-02   0    0 
2014-03-03   1152   32 
2014-03-04   403    22 
2014-03-05   0    0 
2014-03-06   0    0 

И это то, что я пытался, но только принимает результат для date_transaction & total_price только.

SELECT 
DISTINCT DATE_FORMAT(date_transaction, '%Y-%m-%d') AS date_transaction, 
COALESCE(SUM(price), 0) AS total_price 
FROM orders 
WHERE order_id = 39 
AND date_transaction BETWEEN '2014-03-28' AND '2014-04-06' + INTERVAL 1 DAY 
GROUP BY DATE_FORMAT(date_transaction, '%Y-%m-%d') 
ORDER BY date_transaction ASC; 

ответ

0

Используйте функцию DATE() для даты.

SELECT 
DISTINCT DATE(date_transaction) AS date_transaction, 
SUM(price) AS total_price, 
SUM(price_disc) AS total_price_disc 
FROM orders 
WHERE order_id = 39 
AND DATE(date_transaction) BETWEEN '2014-03-28' AND '2014-04-06' + INTERVAL 1 DAY 
GROUP BY DATE(date_transaction) 
ORDER BY DATE(date_transaction) ASC; 
+0

Спасибо! Это хорошо работает. :) – cocksparrer

+0

отлично, если вы хотите показать все order_ids, просто добавьте его в select, а также добавьте его в группу по – Matt