2017-05-07 108 views
-1

我试图教我SQL,和其他资源已经使用SQLZoo(http://sqlzoo.net)。 (根据错误信息,似乎正在使用MariaDB。)新手在SQL:使用CONCAT和ROUND一起

他们的一个练习要求显示每个国家在欧洲的名称和人口(从国家名称,人口,大陆和其他一些东西都列出了),但要显示人口占德国人口的百分比。他们在那里提到CONCAT和ROUND功能,所以我假设他们想要一个'%'符号并且没有小数位。

我想:

SELECT name, 
(CONCAT 
(ROUND(100 * population/(SELECT population FROM world WHERE name= 'Germany'), 0), 
'%') 
FROM world 
WHERE continent= 'Europe' 

我计算过,我会只是有点窝一切在一个又大又肥的混乱。我在原来的SELECT最外层是在计算,然后削去了小数的末尾添加“%”,其次是实际的计算:通过简单地将其德国的小数形式的人口百分比计算的人口按德国人口计算的国家人口数乘以100,所以我可以削减小数位数,在它上面放一个百分比符号,并用它来完成。

的问题是,这个送我回一个错误消息。该错误告诉我在最后检查语法(FROM世界WHERE continent ='Europe')。

有人能告诉我这是怎么回事了?

+1

'CONCAT()'之前有一个额外的圆括号。 –

+0

看看我的删除回答下面为您的查询的工作版本。 –

+0

@GordonLinoff我试着敲了括号,但它仍然无法正常工作 –

回答

3

你有不对称的括号问题。试试这个版本的查询:

SELECT 
    name, 
    CONCAT(ROUND(100 * population/
      (SELECT population FROM world WHERE name= 'Germany'), 0), '%') 
FROM world 
WHERE continent = 'Europe' 
+0

糟糕。就是这样。谢谢。 –