我有一个名为“r”的表,在该表中我存储了id,ip和country。我正在运行此查询:
SELECT r.country, count(rr.ip), count(DISTINCT rr.ip)
FROM `r`
LEFT JOIN r rr
ON r.country = rr.country
GROUP BY r.country
我确实得到了包含列的行:“country”;“number”;“number”; 但两个“计数()”并没有显示我想要显示的内容(每个国家的原始/唯一ips的数量),我不知道为什么。例如,对于US,我看到> 2000个唯一的ips,但我在数据库中只有500个条目。我的查询出了什么问题?
我想从数据库中检索的是包含列的行列表:countries + count raw ips + count unique ips。 (与每个国家/地区相关的计数),我的意思是检索不同国家/地区的列表并计算ips一个(不必进行多个查询)。
答案 0 :(得分:1)
SELECT r.country, count(r.ip), count(DISTINCT r.ip)
FROM `r`
GROUP BY r.country
答案 1 :(得分:0)
像(完全未经测试)的东西:
SELECT
r.country,
count(r.ip),
(SELECT COUNT(DISTINCT rr.ip) from r rr where rr.country = r.country)
FROM
r r
GROUP BY
r.country
答案 2 :(得分:0)
为什么你需要在这里自我加入?在sqlite中你所拥有的快速肮脏的设置我能够做到
SELECT country, count(ip), count(DISTINCT ip) FROM r GROUP BY country
......我得到了预期的结果。