首页 > 解决方案 > 找出每个站点访问过至少两个不同国家的唯一用户数

问题描述

找出每个站点访问过至少两个不同国家的唯一用户数。给定时间戳、用户、国家、站点

我认为查询应该看起来像这样,但它似乎不正确,因为它对每个站点的唯一用户数给出了非常相似的答案。

SELECT site_id, COUNT (DISTINCT user_id) 
FROM SWE 
GROUP BY site_id
HAVING COUNT(country_id) >=2
ORDER BY site_id ASC;

标签: mysqlsqlcountdistinct

解决方案


两级聚合是编写查询最自然的方式:

select site_id, count(*)
from (select user_id, site_id, count(*)
      from swe
      group by user_id, site_id
      having min(country) <> max(country)  -- or count(distinct country) >= 2
     ) us
group by site_id;

推荐阅读