mysql - 我可以只计算新个人的月份吗?

标签 mysql sql

我正在尝试统计一年中几个月参加过事件的人数。每个人在 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/

相关文章:

mysql - 自动更新 MySql 字段

sql - Snowflake 使用流来跟踪表的更新/删除

java - 将带有 subselect in select 的 SQL 转换为 HQL

mysql - SQL添加忽略重复的新列

mysql 与 order by 和 limit 的联合

mysql - Cakephp 从另一个 View 中检索 id

php - 这个php代码可以sql注入(inject)吗?

mysql - 选择日期之间出现次数最少的记录

mysql 根据相同字段返回两列

.net - 在运行时动态选择表名的最佳方法是什么?