2017-05-07 294 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

糟糕。就是這樣。謝謝。 –