【问题标题】: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