【发布时间】:2019-05-10 15:37:57
【问题描述】:
我正在尝试统计一年中参加过活动的人数。每个人在 MariaDB 中都有一个唯一的 ID,我可以使用 COUNT(DISTINCT MEMBER_ID) 并按事件月份分组来获得每个月的总计数。但是,我想知道每个月的总数中有多少人是新人(例如,第一次参加活动)以及有多少人返回。
例如,如果有这样的表...
EVENT_ID MEMBER_ID EVENT_DATE
1001 100 1/1/2019
1001 123 1/1/2019
1001 222 1/1/2019
1002 100 1/4/2019
1002 123 1/4/2019
1002 333 1/4/2019
1003 100 2/12/2019
1003 444 2/12/2019
1004 123 2/20/2019
1004 555 2/20/2019
...此代码将为我提供每个月参加的人数的计数。
SELECT MONTH(EVENT_DATE) as EVENT_MONTH, COUNT(DISTINCT MEMBER_ID) as ID_COUNT FROM `table`
WHERE YEAR(EVENT_DATE) = YEAR(CURRENT_TIMESTAMP)
GROUP BY MONTH(EVENT_DATE)
像这样……
EVENT_MONTH ID_COUNT
1 4
2 4
至少,我想知道每个月有多少人是新人,所以
EVENT_MONTH ID_COUNT
1 4
2 2
但是,如果可能的话,我很想统计一下 1 月份来的人在 2 月份继续参加,以及 2 月份参加的人数有多少人在 3 月份参加等等。
任何帮助将不胜感激!
【问题讨论】:
-
MM/DD/YYYY格式的日期真的很难处理,尤其是因为其他人坚持使用DD/MM/YYYY格式。 MySQL 和大多数数据库一样,更喜欢ISO-8601 或YYYY-MM-DD,这不仅没有歧义,而且可以轻松排序。 -
用什么来衡量会员是否是新会员。从给出的信息来看,没有这样的列可以用来检测。
-
抱歉,这些日期在表格中的格式实际上是“YYYY-MM-DD”。