SQL中的新手:一起使用CONCAT和ROUND

时间:2017-05-07 14:39:53

标签: sql rounding mariadb concat

我试图自学SQL,并且一直在使用SQLZoo(http://sqlzoo.net)等资源。 (根据错误消息,似乎正在使用MariaDB。)

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

我试过了:

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

我认为我只需将所有东西嵌入一个大而肥胖的混乱中。原始SELECT中我最外层的是添加'%'在计算结束时,然后刮掉小数位,然后进行实际计算:通过简单地将国家/地区的人口除以德国,按小数形式计算德国人口百分比&# 39; s,乘以100,这样我就可以减去小数位,在它上面写一个百分号,并完成它。

问题是这会向我发回错误消息。该错误告诉我最后检查语法(FROM world WHERE continent =' Europe')。

有人可以告诉我哪里出错了吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

如果您在使用 concatround 时得到很多 0,请试试这个。

select name, concat(cast(round(100*population/(select population from world where name='Germany'),0) as int),'%') as percentage from world where continent = 'Europe'