【问题标题】:Number of different user's IDs occured in the table more than 3 times表中不同用户 ID 出现次数超过 3 次
【发布时间】:2019-07-03 10:26:40
【问题描述】:

我有一个任务要做,有一个具有不同用户 ID 的表,SQL 查询应该计算表中出现 3 次以上的不同用户 ID 的数量。例如,表中出现的 ID 编号为 1、1、2、1、3、4、3、3、1、2、3、4、5、4、5、4,因为编号 1、3 和 4 出现在表超过 3 次 SQL 查询应该只返回一个行号 3。 到目前为止我所做的是:

SELECT COUNT(*) counter 
   FROM (SELECT COUNT(id) as counter_id FROM user_id GROUP BY id HAVING COUNT(id) >3)

我不确定一个是否正确,如果不正确,那么哪个是正确的。

【问题讨论】:

    标签: mysql sql database count


    【解决方案1】:

    您是否尝试过运行查询?

    SELECT COUNT(*) counter
    FROM (SELECT COUNT(id) as counter_id
          FROM user_id
          GROUP BY id
          HAVING COUNT(id) > 3
         )
    

    如果是这样,你会得到一个错误,因为FROM 子句中的子查询需要一个别名。另外,一个表会被称为user_id,这很奇怪。

    SELECT COUNT(*) counter
    FROM (SELECT COUNT(id) as counter_id
          FROM user_id
          GROUP BY id
          HAVING COUNT(id) > 3
         ) u
    -------^
    

    【讨论】:

      【解决方案2】:

      在 count() 中使用 distinct 并仅从子查询输出中获取 id

      select count(distinct id) from ( SELECT id  
      FROM user GROUP BY id 
      HAVING COUNT(id) >3) a
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-19
        相关资源
        最近更新 更多