mysql - 找出每个站点访问过至少两个不同国家的唯一用户数
问题描述
找出每个站点访问过至少两个不同国家的唯一用户数。给定时间戳、用户、国家、站点
我认为查询应该看起来像这样,但它似乎不正确,因为它对每个站点的唯一用户数给出了非常相似的答案。
SELECT site_id, COUNT (DISTINCT user_id)
FROM SWE
GROUP BY site_id
HAVING COUNT(country_id) >=2
ORDER BY site_id ASC;
解决方案
两级聚合是编写查询最自然的方式:
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;
推荐阅读
- python - 包含字符串列的测试数据的分类
- python - 在 python 上的矩阵侧面创建条形图
- windows - 如何在 Windows 上的 GitKraken 中指定 ssh 自定义端口?
- javascript - Dragula 和 Angular 5 - 通过拖放更新对象位置值
- php - 持续时间之间的差异
- machine-learning - SVM 分类器边缘内的点是否也支持向量?
- textbox - 谁将文本框限制为单词列表,不承认任何其他
- hyperledger - Composer-Rest-Server 在我的概念中生成了一个额外的 id 字符串
- entity-framework - 在实体框架中为不同的上下文设置不同的执行策略
- vuejs2 - 图片未显示(VueJS - 使用 v-for)