Sqlzoo在选择教程5中选择

Sqlzoo在选择教程5中选择,sql,select,Sql,Select,我的问题是: 德国人口8000万,是世界上人口最多的国家 欧洲国家。奥地利人口850万,占世界人口的11% 德国的人口 显示欧洲每个国家的名称和人口。展示 人口占德国人口的百分比 我的答覆是: 我做错了什么? 谢谢。子查询应该返回多个数据,这样您就可以在这样的函数中使用 SELECT name,CONCAT(ROUND(population/80000000,-2),'%') FROM world WHERE population IN (SELECT population

我的问题是:

德国人口8000万,是世界上人口最多的国家 欧洲国家。奥地利人口850万,占世界人口的11% 德国的人口

显示欧洲每个国家的名称和人口。展示 人口占德国人口的百分比

我的答覆是:

我做错了什么?
谢谢。

子查询应该返回多个数据,这样您就可以在这样的函数中使用

  SELECT name,CONCAT(ROUND(population/80000000,-2),'%')
    FROM world
    WHERE population IN (SELECT population
                        FROM world
                          WHERE continent='Europe')

这个问题不完整,是从

这就是答案

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

我想知道子查询,因为OP的问题至少对我来说不清楚。原因是世界表,顾名思义,我不得不承认,它包含了所有的世界国家,而我们只对欧洲国家感兴趣。此外,必须从DB中检索德国人口,因为它不是extacly 80.000.000;如果您使用该数字,您将收到德国人口的101%。

在sql Zoo中使用sql server时,请不要使用CONCAT:

    select name, CONCAT(ROUND((population/(select population from world where name = "Germany"))*100),"%") 
    from world
    where continent= "Europe"
我认为sqlzoo使用的是一个不支持CONCAT的sqlserver版本,而且看起来您必须执行CAST。而是使用“+”连接。另见

我认为脚本应该是下面的样子,尽管我还没有达到我想要的状态,因为我希望结果看起来像3%;0%;4%;等,而不是3.000000000000000%;0.000000000000000%;4.000000000000000%;等我开始了一个新的话题

挑选 名称 CASTROUNDpopulation*100/从name='Germany',0为varchar20+'%的世界中选择人口 来自世界 选择人口中的人口在哪里 来自世界
在下面添加了代码片段的地方,

select name, concat (round(population/(select population from world where 
name='germany')*100,0), '%') from world where continent='Europe'

如果您想要百分比,则将分区8000000更改为8000000。您可以编辑问题并添加数据示例和接受的结果谢谢回答!代码只回答堆栈溢出问题,因为没有上下文的代码转储无法解释解决方案的工作方式或原因,使原始海报或任何未来读者无法理解其背后的逻辑。请编辑您的问题,并对您的代码进行解释,以便其他人可以从您的答案中受益!SQL的最后一部分,其中人口。。。这是多余的。你可以用WHERE-continent=european来代替那个blob。
SELECT name, CONCAT(ROUND(population/(SELECT population FROM world WHERE name = 'Germany')*100,0), '%')
FROM world
WHERE continent = 'Europe'
select name, concat (round(population/(select population from world where 
name='germany')*100,0), '%') from world where continent='Europe'