我有一个MySQL数据库,我想总结给定时间范围内的总数。这是我的桌子:
|NO | total | start_date | completion_date |
+---+-------+------------+-----------------+
|1 | 12 |2017-09-11 |2017-10-11 |
|2 | 64 |2017-12-05 |2018-02-02 |
|3 | 22 |2017-12-12 |2018-03-01 |
|4 | 10 |2017-12-13 |2018-07-11 |
鉴于此表,我希望每个月的帐户总数在给定的起始日期至完成日期之间。
例如,在第三行中,12月至3月的月份总计为22。星期几无关紧要。
该表可能是:
|NO | total | date |
+---+-------+------------+
|1 | 12 |2017-09 |
|2 | 12 |2017-10 |
|3 | 64 |2017-12 |
|4 | 64 |2018-01 |
|5 | 22 |2017-12 |
|6 | 22 |2018-01 |
|7 | 22 |2018-02 |
|5 | 22 |2018-03 |
依此类推...
我尝试使用以下间隔:
start_date - interval 1 month
但是我不确定如何具体执行此操作,因为我有两列,start_date和completion_date,它怎么知道为每一行更改此间隔?
答案 0 :(得分:0)
我相信这会为您提供所需的结果:
(
SELECT
sum(total),
date_format(
start_date, '%Y-%m'
) as dates
FROM
test
GROUP BY
dates
)
UNION
(
SELECT
sum(total),
date_format(
end_date, '%Y-%m'
) as dates
FROM
test
GROUP BY
dates
)
ORDER BY dates;
结果:
| sum(total) | dates |
| ---------- | ------- |
| 12 | 2017-09 |
| 12 | 2017-10 |
| 96 | 2017-12 |
| 64 | 2018-02 |
| 22 | 2018-03 |
| 10 | 2018-07 |