Найдите количество уникальных пользователей, посетивших как минимум две страны на сайте. - PullRequest
1 голос
/ 15 мая 2019

Найдите количество уникальных пользователей, которые посетили как минимум две разные страны на одном сайте. Учитывая временную метку, пользователя, страну, сайт

Я думаю, что запрос должен выглядеть следующим образом, но он не выглядит правильным, потому что он дает очень похожий ответ на количество уникальных пользователей на сайт.

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

Ответы [ 2 ]

3 голосов
/ 15 мая 2019

Два уровня агрегации - наиболее естественный способ написания запроса:

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;
1 голос
/ 15 мая 2019

Попробуйте это-

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
...