我有一个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 |
在这个表中,我想要在给定的范围start_date到completion_date中获得每个月的总帐户。
例如,在第三行中,22将是12月到3月的总数。星期几并不重要。
该表可能是:
|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,它如何知道为每一行更改此间隔?
发布于 2019-02-22 05:09:43
我相信这会给你带来你想要的结果:
(
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 |
https://stackoverflow.com/questions/54814310
复制相似问题