SELECT教程#5中的Sqlzoo SELECT

时间:2015-06-19 09:44:50

标签: sql select

我的问题是:

  

德国(人口8000万)人口最多   欧洲国家。奥地利(人口850万)拥有11%的人口   德国人口。

     

显示欧洲各国的名称和人口。显示   人口占德国人口的百分比。

我的回答:

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

我做错了什么? 感谢。

6 个答案:

答案 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'