【问题标题】:How can I count a duplicated entry in different days as a single entry?如何将不同日期的重复条目计为单个条目?
【发布时间】:2020-09-19 11:06:01
【问题描述】:

我有以下结构:

MemberID
Year
Month
Day

每天,当用户登录时,活动中会出现如下内容:

'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 差异。天。

【问题讨论】:

    标签: sql count subquery having-clause


    【解决方案1】:

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

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

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

    【讨论】:

    • 这行得通,谢谢 :) 你能告诉我我怎样才能只在本月做吗?这个带来的总体来说也不错,我试着给自己设置一个月份的标准,但它不起作用
    【解决方案2】:

    获取至少出现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;
    

    【讨论】:

    • 这个月我也尝试了相同的查询 -> #1064 - 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 2 行的“where month = 08 group by MemberID having count(*) >= 5) t LIMIT 0, 25”附近使用正确的语法
    • 你是如何定义表格的?检查你的列的类型,字符串需要用引号'08'括起来。
    猜你喜欢
    • 2019-08-28
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多