MySQL通过值和空值选择不同组的总和

时间:2017-11-07 04:24:02

标签: mysql

我们假设我有几家商店有时会有不同的营业日(由于公共假期或其他原因),销售将在下表中保存时间戳:

+----------+---------------------+---------------+
| store_id | sales_date          | sales_amount  |
+----------+---------------------+---------------+
|        1 | 2017-11-03 10:32:44 | 100.00        | 
|        1 | 2017-11-03 10:33:49 | 150.00        |
|        1 | 2017-11-04 11:08:24 | 120.00        |
|        1 | 2017-11-05 13:33:57 | 200.00        |
|        2 | 2017-11-03 12:37:34 | 100.00        |
|        2 | 2017-11-05 15:23:49 | 200.00        |
+----------+---------------------+---------------+

我想使用chart.js显示图表。 我客户的第一个要求是按小时过滤。 Click here for the solution of the first requirement

但现在,他也可以按日期范围和月份进行过滤。

我有以下SQL:

SELECT store_id, DATE(sales_date) as date_hour, sum(sales_amount) as sales_sum 
FROM sales 
GROUP BY store_id, date_hour

我的当前结果是

+----------+-------------+---------------+
| store_id | date_hour   | sales_sum     |
+----------+-------------+---------------+
|        1 | 2017-11-03  | 250.00        | 
|        1 | 2017-11-04  | 120.00        |
|        1 | 2017-11-05  | 200.00        |
|        2 | 2017-11-03  | 100.00        |
|        2 | 2017-11-05  | 200.00        |
+----------+-------------+---------------+

我的预期结果

+----------+-------------+---------------+
| store_id | date_hour   | sales_sum     |
+----------+-------------+---------------+
|        1 | 2017-11-03  | 250.00        | 
|        1 | 2017-11-04  | 120.00        |
|        1 | 2017-11-05  | 200.00        |
|        2 | 2017-11-03  | 100.00        |
|        2 | 2017-11-04  |   0.00        |
|        2 | 2017-11-05  | 200.00        |
+----------+-------------+---------------+

日期范围(在本例中为11月3日至5日)因过滤器输入而异。

有没有机会用MySQL做到这一点?

0 个答案:

没有答案