首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL按两列日期作为范围进行分组

MySQL按两列日期作为范围进行分组
EN

Stack Overflow用户
提问于 2019-02-22 02:57:08
回答 1查看 31关注 0票数 0

我有一个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,它如何知道为每一行更改此间隔?

EN

回答 1

Stack Overflow用户

发布于 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 |

View on DB Fiddle

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54814310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档