我有一个包含这两列的表:
ip country
这些是我在我网站上的观众。我正在尝试查看从每个国家/地区获得的唯一 IP数量。
我想出了这个:
SELECT DISTINCT ip, country, count(*) as views FROM views GROUP BY country
我希望这会选择不同IP的数量以及他们按国家/地区分组的国家/地区。然后我会有一个列views
来保持计数。
这不起作用,此查询返回按国家/地区分组的行总数。无论是否有DISTINCT ip
,我都会得到相同的结果。
编辑:我没有表达清楚,我想弄清楚的是每个国家有多少独特的IP 。
我的一些IP在数据库中是重复的,相同的IP出现3-4次。我想忽略这一点:
输入样本:
**ip** **country**
1.1.1.1 USA
1.1.1.1 USA
1.1.1.1 USA
1.1.1.1 USA
1.1.1.2 USA
1.1.1.2 USA
1.1.1.2 USA
1.1.1.3 GER
1.1.1.3 GER
1.1.1.5 GER
应输出:
USA -> 2
GER -> 2
即:来自美国的两种不同的IP和来自德国的两种不同的IP。
答案 0 :(得分:2)
试试这个:
SELECT
country,
count(DISTINCT ip) views
FROM views
GROUP BY country
ORDER BY country;
答案 1 :(得分:1)
来自@Joseph B SQL的小改动
Select country, views
FROM (SELECT count(DISTINCT ip) views,
country
FROM views
GROUP BY country
ORDER BY country);