我试图自学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')。
有人可以告诉我哪里出错了吗?
答案 0 :(得分:3)
你有不平衡的括号问题。试试这个版本的查询:
SELECT
name,
CONCAT(ROUND(100 * population /
(SELECT population FROM world WHERE name= 'Germany'), 0), '%')
FROM world
WHERE continent = 'Europe'
答案 1 :(得分:0)
如果您在使用 concat
和 round
时得到很多 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'