我的问题是:
德国(人口8000万)人口最多 欧洲国家。奥地利(人口850万)拥有11%的人口 德国人口。
显示欧洲各国的名称和人口。显示 人口占德国人口的百分比。
我的回答:
SELECT name,CONCAT(ROUND(population/80000000,-2),'%')
FROM world
WHERE population = (SELECT population
FROM world
WHERE continent='Europe')
我做错了什么? 感谢。
答案 0 :(得分:5)
问题不完整,取自here
这是答案
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问题不清楚(至少对我来说)。原因是"世界"桌子(顾名思义,我不得不承认)包含所有世界国家,而我们只对欧洲国家感兴趣。此外,德国人口必须从数据库检索,因为它不是80.000.000;如果您使用该号码,您将获得101%的德国人口。
答案 1 :(得分:2)
在SQL Zoo中使用sql server时,请不要使用CONCAT
:
我认为SQL Zoo使用的SQL Server版本不支持CONCAT
,而且看起来你必须做CAST
。而是使用' +'来连接。另请参阅this post。
我认为剧本应该是下面的东西(虽然我没有达到我想要的陈述,因为我希望看起来像3%; 0%; 4%;等等3.000000000000000%; 0.000000000000000%; 4.000000000000000%;等等。我为那个here开始一个新主题。
SELECT
name,
CAST(ROUND(population*100/(SELECT population FROM world WHERE name='Germany'), 0) as varchar(20)) +'%'
FROM world
WHERE population IN (SELECT population
FROM world
WHERE continent='Europe')
答案 2 :(得分:1)
select name, CONCAT(ROUND((population/(select population from world where name = "Germany"))*100),"%")
from world
where continent= "Europe"
答案 3 :(得分:1)
SELECT name, CONCAT(ROUND(population/(SELECT population FROM world WHERE name = 'Germany')*100,0), '%')
FROM world
WHERE continent = 'Europe'
答案 4 :(得分:0)
子查询应返回多个数据,以便您可以像这样使用
SELECT name,CONCAT(ROUND(population/80000000,-2),'%')
FROM world
WHERE population IN (SELECT population
FROM world
WHERE continent='Europe')
答案 5 :(得分:0)
下面添加了代码段
select name, concat (round(population/(select population from world where
name='germany')*100,0), '%') from world where continent='Europe'