如何将不同日期的重复条目计为单个条目?

How can I count a duplicated entry in different days as a single entry?

我有以下结构:

MemberID
Year
Month
Day

每天,当用户登录时,在activity会出现这样的东西:

'1337', '2020', '09', '01' 

这种事情每天都在发生,我想做的就是统计一个会员为活跃会员。如果他的 memberid 显示在 5 个不同的日子里,我想将他包括在“活跃成员”类别中。我有很多条目,对于每个 memberid,我都想这样做并将所有条目都计入一个变量中。

'1337', '2020', '09', '01' 
'1338', '2020', '09', '01' 
'1339', '2020', '09', '01' 
'1340', '2020', '09', '01' 
'1341', '2020', '09', '01' 
'1337', '2020', '09', '02' 
'1338', '2020', '09', '02' 
'1339', '2020', '09', '02' 
'1340', '2020', '09', '02' 
'1341', '2020', '09', '02' 
'1337', '2020', '09', '03' 
'1338', '2020', '09', '03' 
'1339', '2020', '09', '03' 
'1340', '2020', '09', '03' 
'1341', '2020', '09', '03' 
'1337', '2020', '09', '04' 
'1338', '2020', '09', '04' 
'1339', '2020', '09', '04' 
'1340', '2020', '09', '04' 
'1341', '2020', '09', '04' 
'1337', '2020', '09', '05' 
'1338', '2020', '09', '05' 

所以它算什么 -> 2,因为只有 1337 和 1338 登录了 5 dif。天。

如果您想要统计活跃号码的总数,可以使用两个级别的聚合:

select count(*) cnt
from (select memberid from mytable group by memberid having count(*) > 5) t

子查询过滤在 table 中出现超过 5 次的用户。然后外部查询只计算它们。

获取出现至少5次的所有成员:

> select MemberID from TableName group by MemberID having count(*) >= 5;

获取所有这些成员的数量:

> select count(*) c from 
> (select MemberID TableName group by MemberID having count(*) >= 5) t;

对于给定的月份(示例中为 7):

> select count(*) c from 
> (select MemberID TableName where month = '07' group by MemberID having count(*) >= 5) t;