SQL新手:一起使用CONCAT和ROUND

SQL新手:一起使用CONCAT和ROUND,sql,rounding,mariadb,concat,Sql,Rounding,Mariadb,Concat,我试图自学SQL,并一直在使用SQLZoo()和其他资源。(根据错误消息,它似乎正在使用MariaDB。) 他们的一个练习要求显示欧洲每个国家的名称和人口(从“世界”表中列出国家名称、人口、大陆和其他一些东西),但要显示人口占德国人口的百分比。他们在这里提到了CONCAT和ROUND函数,所以我假设他们想要一个“%”符号,不需要小数位数 我试过: SELECT name, (CONCAT (ROUND(100 * population/(SELECT population FROM world

我试图自学SQL,并一直在使用SQLZoo()和其他资源。(根据错误消息,它似乎正在使用MariaDB。)

他们的一个练习要求显示欧洲每个国家的名称和人口(从“世界”表中列出国家名称、人口、大陆和其他一些东西),但要显示人口占德国人口的百分比。他们在这里提到了CONCAT和ROUND函数,所以我假设他们想要一个“%”符号,不需要小数位数

我试过:

SELECT name, 
(CONCAT
(ROUND(100 * population/(SELECT population FROM world WHERE name= 'Germany'), 0),
'%') 
FROM world
WHERE continent= 'Europe'
我想我得把所有东西都堆在一个又大又肥的垃圾堆里。在最初的SELECT中,我的最外层是在计算结束时添加“%”,然后去掉小数位,然后再进行实际计算:以十进制形式计算人口占德国人口的百分比,只需将该国人口除以德国人口,乘以100,这样我就可以去掉小数点,在上面加上一个百分号,然后就可以了

问题是,这会向我发回一条错误消息。这个错误告诉我检查末尾的语法(来自WorldwhereContinental='Europe')


有人能告诉我哪里出了问题吗?

您有括号不平衡的问题。请尝试此版本的查询:

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

你有不平衡括号的问题。请尝试此版本的查询:

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

如果在使用
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'

如果在使用
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'

CONCAT()
之前有一个额外的括号。请查看下面我删除的答案,以获得查询的有效版本。@GordonLinoff我试图去掉括号,但仍然没有work@TimBiegeleisen我是新来的,所以我没有代表可以看到已删除的内容未删除,但一般来说,我们被警告不要回答打字错误问题。在
CONCAT()
之前有一个额外的括号。请查看下面我删除的答案,以获得查询的有效版本。@GordonLinoff我尝试去掉括号,但仍然没有work@TimBiegeleisen我是新来的,因此,我没有代表看到删除的内容未删除,但一般来说,我们被警告不要回答打字错误问题。哎呀。就这样。谢谢。如果我使用这个查询,百分比后面会加上0,比如:3.000000000000%。DB更新是否导致此问题?@B.Stucke,为了避免后面的零,您可以将结果强制转换为浮点,例如,
选择强制转换(舍入(1.23456789,2)为浮点)
,根据.Oops。就这样。谢谢。如果我使用这个查询,百分比后面会加上0,比如:3.000000000000%。DB更新是否导致此问题?@B.Stucke,为了避免后面的零,您可以将结果强制转换为浮点,例如,
选择强制转换(四舍五入(1.23456789,2)为浮点)
,根据。