我有一个任务要做,有一个具有不同用户ID的表,SQL查询应该计算该表中出现的不同用户ID的数目超过3次。例如,表中出现的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)
我不确定是正确的还是正确的。
答案 0 :(得分:0)
在count()中使用distinct
并仅从子查询输出中获取ID
select count(distinct id) from ( SELECT id
FROM user GROUP BY id
HAVING COUNT(id) >3) a
答案 1 :(得分:0)
您是否尝试过运行查询?
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
-------^