我有一张 table
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
因此,新人不应计入上个月,但应计入我的范围(一月至六月)的下个月。如果某个人被删除,他应该在他被删除的月份最后一次与其他人一起统计。
如何为此编写查询?
最佳答案
这至少可以通过运行总计来解决。这只是如何做到这一点的概述,您需要为实际的解决方案做一些工作:
select people, date, 1 as persons from yourtable
union all
select people, deleted, -1 as persons from yourtable where deleted is not null
然后对这些数据进行累计,这样您就可以对 +-1 人字段进行求和,这样您就可以得到到目前为止的人数。
对于月中发生的事件,您必须将日期调整为当月或下个月的开始,无论您希望以何种方式计算它们。
如果您还需要没有发生任何变化的月份,则可能需要一个表格,其中包含您所需的最大日期范围的每个月的第一天,例如 1.1.2000 - 1.12.2100 .
关于mysql - GROUP BY 日期和总和向前是但向后否,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30850261/