Mysql 按日期分组,并向前求和是,向后求和否

Mysql 按日期分组,并向前求和是,向后求和否,mysql,Mysql,我有一张桌子 PEOPLE, DATE, DELETED Amanda, 2015-03-01, Null Ray, 2015-03-01, Null Moe, 2015-04-01, Null Yan, 2015-05-01, Null Bee, 2015-05-05, 2015-06-12 现在我需要将其分组,并将其与如下月份相加: March: 2 people April: 3 May: 5 June: 5 July: 4 所以在我的范围内(1月至6月),新员工不应该在上个月统计,而

我有一张桌子

PEOPLE, DATE, DELETED
Amanda, 2015-03-01, Null
Ray, 2015-03-01, Null
Moe, 2015-04-01, Null
Yan, 2015-05-01, Null
Bee, 2015-05-05, 2015-06-12
现在我需要将其分组,并将其与如下月份相加:

March: 2 people
April: 3
May: 5
June: 5
July: 4
所以在我的范围内(1月至6月),新员工不应该在上个月统计,而应该在下个月统计。若这个人被删除了,那个么他应该和其他人一起计算在这个月最后一次被删除的时候


如何为此编写查询?

至少可以使用运行总计来解决此问题。这只是如何做的概述,您需要为实际解决方案做一些工作:

select people, date, 1 as persons from yourtable
union all
select people, deleted, -1 as persons from yourtable where deleted is not null
然后对这些数据做一个连续的总计,这样你就可以对+-1 persons-字段求和,这应该会给出到目前为止在那里的人数

对于月中发生的事件,你必须把日期调整为下一个月或下个月的开始,无论你想计算什么样的日期。 如果您还需要未发生更改的月份,则可能需要一个表格,其中包含每个月的第一天,以显示您所需的最大日期范围,例如1.1.2000-1.12.2100。

'\_(ツ)_/¯