我正在尝试统计一年中几个月参加过事件的人数。每个人在 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 月份参加,等等。
任何帮助将不胜感激!
最佳答案
使用 min(eventDate) 选择成员 ID 到新表中。然后您可以使用新表进行另一个查询来确定这是否是成员(member)优先事件。
关于mysql - 我可以只计算新个人的月份吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56080819/