我有一个简单的代码,显示国家名称和人口在100000到200000之间的城市数量。现在我正在尝试显示没有城市的国家名称。此城市的计数应在表格中显示为0.
SELECT country.name, COUNT(City.population)
FROM (city JOIN country ON city.country = country.code)
WHERE city.population BETWEEN 100000 AND 200000
GROUP BY country.name
ORDER BY country.name;
谢谢
答案 0 :(得分:2)
LEFT JOIN
还要包含没有任何城市人口的国家/地区:
SELECT country.name, COUNT(City.population)
FROM country
LEFT JOIN city
ON city.country = country.code
AND city.population BETWEEN 100000 AND 200000
GROUP BY country.name
ORDER BY country.name;
答案 1 :(得分:0)
尝试使用union
SELECT country.name, COUNT(City.population)
FROM (city JOIN country ON city.country = country.code)
WHERE city.population BETWEEN 100000 AND 200000
GROUP BY country.name
UNION
SELECT country.name, COUNT(City.population)
FROM (city JOIN country ON city.country = country.code)
WHERE city.population < 100000 OR city.population >200000
GROUP BY country.name
ORDER BY country.name;
我现在无法测试它。
答案 2 :(得分:0)
SELECT country.name, count(case when city.population BETWEEN 100000 AND 200000 then city.population else 0 end)
FROM (city JOIN country ON city.country = country.code)
GROUP BY country.name
ORDER BY country.name;