2016-05-10 13 views
1

各日付範囲から列を合計する方法。日付範囲からMySQL SUM列

価格列&ディスカウント列を合計し、日付行に基づいて計算する必要があります。

この場合、私はがためを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