ORACLE SQL - 显示计数和0

时间:2016-11-21 10:53:22

标签: sql oracle count null

我有一个简单的代码,显示国家名称和人口在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;

谢谢

3 个答案:

答案 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;