MySQL列表每个日期的结果数,包括没有结果的天数

时间:2016-11-22 14:16:59

标签: mysql

我有一些表格,我将记录存储在

transactions
---
| id | type_id | value |     created_at      |
|----|---------|-------|---------------------|
| 1  |    3    |   10  | 2016-11-01 09:00:00 |
| 2  |    3    |   15  | 2016-11-01 10:00:00 |
| 3  |    3    |   10  | 2016-11-03 09:00:00 |
types
---
| id |  name  |
|----|--------|
|  3 | 'Type' |

我想得到的是自时间开始以来每天交易价值的总和(总和),没有记录显示为0的天数:

results
---
| type | total |    date    |
|------|-------|------------|
| Type |  25   | 2016-11-01 |
| Type |  0    | 2016-11-02 |
| Type |  10   | 2016-11-03 |

当我只对具有值的结果感兴趣但查询没有返回没有记录的日期时,我可以很容易地做到这一点:

SELECT
    `types`.`name` as `type`,
    SUM(`transactions`.`value`) as `total`,
    DATE_FORMAT(`transactions`.`created_at`) as `date`
FROM `transactions` 
JOIN `types` 
    ON `transactions`.`type_id` = `types`.`id` 
GROUP BY `date`, `types`.`id`

不幸的是,我需要获取一个范围之间的所有日期并返回值,默认为零。范围可以根据用户选择的内容而变化。

0 个答案:

没有答案