SQL总和问题。如何计算人口总数?

SQL总和问题。如何计算人口总数?,sql,Sql,表: 我在自学SQL,遇到了一些我还没有弄明白的事情。我试图从数据库中提取的数据是比利时、荷兰和卢森堡的人口总数。我尝试了以下方法: cia ( name , region , area , population , gdp ) 返回的值似乎不正确。我错过了什么 使用或而不是和,因为一行可以不同时具有这三种设置。您的名称单元格只能是或 对于值列表,您也可以在()中使用IN 使用或而不是和,因为一行可以不同时具有这三种设置。您的名称单元格只能是或 对于值列表,您也可以在()中使用IN Urils

表:

我在自学SQL,遇到了一些我还没有弄明白的事情。我试图从数据库中提取的数据是比利时、荷兰和卢森堡的人口总数。我尝试了以下方法:

cia ( name , region , area , population , gdp )

返回的值似乎不正确。我错过了什么

使用
而不是
,因为一行可以同时具有这三种设置。您的
名称
单元格只能是或

对于值列表,您也可以在()中使用
IN


使用
而不是
,因为一行可以同时具有这三种设置。您的
名称
单元格只能是或

对于值列表,您也可以在()中使用
IN


Urils答案是最好的/最一致的最佳选择;但是,根据您的SQL版本和数据集的大小,您可能需要考虑使用联合来加速操作(通常只与Oracle有关的问题)。因此,如果您现在/将来在Oracle中,根据您的设置,下面的程序可能会运行得更快

SELECT SUM(population)
FROM cia 
WHERE name IN('Belgium', 'Netherlands', 'Luxembourg')
在任何一种情况下,我都建议使用LOWER()并将搜索条件与所有小写答案放在一起,以防止由于大小写不一致而丢失结果

SELECT SUM(result_sum) FROM
(
  SELECT SUM(population) AS result_sum 
    FROM cia 
    WHERE name = 'Belgium' 
  UNION
  SELECT SUM(population) AS result_sum 
    FROM cia 
    WHERE name = 'Netherlands' 
  UNION 
  SELECT SUM(population) AS result_sum 
    FROM cia 
    WHERE name = 'Luxembourg'
)
;

Urils答案是最好的/最一致的最佳选择;但是,根据您的SQL版本和数据集的大小,您可能需要考虑使用联合来加速操作(通常只与Oracle有关的问题)。因此,如果您现在/将来在Oracle中,根据您的设置,下面的程序可能会运行得更快

SELECT SUM(population)
FROM cia 
WHERE name IN('Belgium', 'Netherlands', 'Luxembourg')
在任何一种情况下,我都建议使用LOWER()并将搜索条件与所有小写答案放在一起,以防止由于大小写不一致而丢失结果

SELECT SUM(result_sum) FROM
(
  SELECT SUM(population) AS result_sum 
    FROM cia 
    WHERE name = 'Belgium' 
  UNION
  SELECT SUM(population) AS result_sum 
    FROM cia 
    WHERE name = 'Netherlands' 
  UNION 
  SELECT SUM(population) AS result_sum 
    FROM cia 
    WHERE name = 'Luxembourg'
)
;