Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查找每个站点至少访问过两个不同国家/地区的唯一用户数_Mysql_Sql_Count_Distinct - Fatal编程技术网

Mysql 查找每个站点至少访问过两个不同国家/地区的唯一用户数

Mysql 查找每个站点至少访问过两个不同国家/地区的唯一用户数,mysql,sql,count,distinct,Mysql,Sql,Count,Distinct,查找每个站点至少访问过两个不同国家/地区的唯一用户数。 给定时间戳、用户、国家/地区、站点 我认为这个查询应该是这样的,但它似乎不对,因为它对每个站点的唯一用户数给出了非常相似的答案 SELECT site_id, COUNT (DISTINCT user_id) FROM SWE GROUP BY site_id HAVING COUNT(country_id) >=2 ORDER BY site_id ASC; 试试这个- SELECT A.user_id,B.site_id,C

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

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

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

SELECT A.user_id,B.site_id,COUNT(DISTINCT B.country_id) [Country Visited]
FROM
(
    SELECT user_id 
    FROM SWE
    GROUP BY user_id
    HAVING COUNT(site_id) = COUNT(DISTINCT site_id)
)A
INNER JOIN SWE B ON A.user_id = B.user_id
GROUP BY A.user_id,B.site_id
HAVING COUNT(DISTINCT B.country_id) >= 2

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

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;