sqlzoo刷题——select from world(世界经济查询)

前言

本文章记录sqlzoo刷题过程以及解题思路,每个小节不仅包含练习,还有选择题(quiz)部分的实现思路
网址:sqlzoo_select from world

一、代码练习部分

world 表:
在这里插入图片描述

  1. 顯示具有至少2億人口的國家名稱。

查询结果列——name
条件——population:>200000000
查询逻辑——筛选人口>2亿的记录,再选择国家名称列显示

SELECT name 
FROM world
WHERE population>200000000
  1. 找出有至少200百萬(2億)人口的國家名稱,及人均國內生產總值。

查询结果列——name,gdp_avg(新生成列)
条件——人口:>2亿
查询逻辑——查找出人口>2亿的记录,再选择显示国家名称,人均生产总值(总值/人口)

select name,gdp/population as gdp_avg
from world
where population>200000000
  1. 顯示’South America’南美洲大陸的國家名字和以百萬為單位人口數。 將人口population 除以一百萬(1000000)得可得到以百萬為單位人口數。

查询结果列——国家名称,人口数(百万为单位)
条件——洲份:南美洲大陆
查询逻辑——查找出continental=South America的记录,再选择显示国家名称,人口数(单位换算:原人口/100万)

select name,population/1000000 as pop_billion
from world
where continent='South America'

  1. 顯示法國,德國,意大利(France, Germany, Italy)的國家名稱和人口。

查询结果列——国家名称,人口
条件——国家名称=法國,德國,意大利(in关键字)
查询逻辑——选择国家名称为法國,德國,意大利的行,再选择显示name,population 列

select name,population 
from world
where name in ('France','Germany','Germany')

  1. 顯示包含單詞“United”為名稱的國家

查询结果列——国家名称
条件——国家名称包含united(like ‘%’)
查询逻辑——查询国家名称包含united字符串的行,选择name列显示

select name
from world
where name like '%United%'
  1. 成為大國的兩種方式:如果它有3百萬平方公里以上的面積,或擁有250百萬(2.5億)以上人口。请展示大國的名稱,人口和面積。

查询结果列——国家名称,人口,面积
条件——
1、面积>300万
2、人口>2.5亿
3、二者满足其中一个就选择(or关键字)
查询逻辑——选择面积>300万/人口>2.5亿的行,显示国家名称,人口,面积列

select name,population,area
from world
where area>3000000 or population>250000000
  1. 顯示以人口或面積為大國的國家,但不能同時兩者。顯示國家名稱,人口和面積。

查询结果列——国家名称,人口,面积
条件——
1、人口>300万
2、面积>2.5亿
3、二者不能同时满足,则可以将条件转化为:(人口>300万且面积<2.5亿) or (面积<2.5亿 且人口>300万)
查询逻辑——选择人口和面积同时满足条件的行,选择国家名称,人口,面积

select name,population,area
from world
where (area>3000000 and population<250000000) 
	or (area<3000000 and population>250000000)
  1. 對於南美顯示以百萬計人口,以十億計2位小數GDP。

查询结果列——人口(单位:百万),GDP(单位:十亿)
条件——
1、洲份:南美洲
2、gdp保留2位小数 #round(数值,保留几位小数)
查询逻辑——选择南美洲的行,显示人口和gdp(注意单位换算和数字格式)

select  name,
		round(population/1000000,2) as pop_,
		round(gdp/1000000000,2) as gdp_
from world
where continent='South America'
  1. 顯示萬億元國家的人均國內生產總值,四捨五入到最近的$ 1000。

查询结果列——name,gdp_avg
条件——
1、gdp>1万亿
2、gdp_avg格式(round(四舍五入,0)*1000)
查询逻辑——选择gdp>1000000000000的行,显示name和gdp_avg列(注意单位换算和数字格式)

SELECT  name, 
		ROUND(gdp/population/1000,0)*1000
FROM world 
WHERE gdp>1000000000000
  1. 展示N开头的国家的名字和洲份,其中Oceania洲的改成Australasia

查询结果列——国家名称,洲份
条件——
1、国家名称:N开头(like’%’)
2、洲份Oceania置换成Australasia(case…when…then…else…end)
查询逻辑——选择国家名称为N开头的行,显示国家名称,洲份(包含置换过程)

SELECT name,
       (CASE WHEN continent='Oceania' THEN 'Australasia'ELSE continent END)as continent
FROM world
WHERE name LIKE 'N%'
  1. 显示名称和大陆 - 但用欧亚大陆代替欧洲和亚洲;替代美国 - 代表北美或南美或加勒比地区的每个国家/地区。显示以 A 或 B 开头的国家/地区

查询结果列——国家名称,洲份
条件——洲际:一些名称的置换
查询逻辑——同上一题。注意case语句中是不需要逗号分割条件的,最后记得用end结束语句。

select name,
case when continent in ('Asia ','Europe')then 'Eurasia'
     when continent in ('North America ','South America','Caribbean')then 'America'
     else continent
end as continent
from world
where name like'A%'or name like'B%'
  1. 把大陆放好…
    大洋洲成为澳大拉西亚
    欧亚大陆和土耳其的国家前往欧洲/亚洲
    以"B"开头的加勒比岛屿前往北美,其他加勒比岛屿前往南美洲
    显示所有国家/地区的名称、原始大陆和新大陆。

查询结果列——国家名称,旧洲份,新洲份
条件——主要是新旧大陆的置换(case…when…then…else…end))
1、大洋洲→澳大利亚西
2、欧亚大陆,土耳其的国家→欧洲/亚洲
3、加勒比岛屿中,1)名字B开头的→北美;2)其他南美(这里需要嵌入一个case语句做置换)
查询逻辑——同上。

select  name,
		continent as continent_Orig,
		case when continent='Oceania'then 'Australasia'
			 when continent in('Eurasia','Turkey')then 'Europe/Asia'
			 when continent='Caribbean'then 
     			case when name like'B%'then 'North America'else 'South America end
		 else continent  end as continent_New
from world
order by name ASC

二、测试部分(选择题)

1.選擇代碼找出以U開頭的國家名稱。

查询结果列——国家名称
条件——国家名称:U开头(like‘%’)
查询逻辑——选择国家名称U开头的行,显示name列

select name,
from world
where name like 'U%'
  1. 選擇代碼以顯示英國United Kingdom的人口。

查询结果列——人口
条件——国家名称=英国
查询逻辑——查询国家为英国的所有行,选择人口列显示

select population 
from world
where name='United Kingdom'
  1. 這個SQL代碼有什麼錯處。預計結果應該是含’France’的單列。
 SELECT continent 
   FROM world 
  WHERE 'name' = 'France'

where后的列名不应该到引号,引号内表示字符串

  1. 選擇你會從這個代碼獲得的結果。
 SELECT name, population / 10 
  FROM world 
 WHERE population < 10000

查询结果列——国家名称,人口(数值小数点向左缩进一位)
条件——人口<1万
查询逻辑——查询人口少于1万的国家,以十万为单位显示人口

  1. 選擇代碼以顯示在歐洲和亞洲的國家的名稱和人口。

查询结果列——国家名称,人口
条件——
1、洲际=欧洲
2、洲际=亚洲
3、查询的是2个群体,只要满足其一就是要选择的(or关键字,或者in)
查询逻辑——查询洲际为亚洲或欧洲的行,显示name,population列`

写法1select name,population 
from world
where continent='Asia' or continent='Europe'
写法2select name,population 
from world
where continent in('Asia','Europe')
  1. 選擇代碼,結果只有兩行。

答案选d

  1. 選擇你會從這個代碼獲得的結果。
SELECT name FROM world
WHERE continent = 'South America'
  AND population > 40000000

查询结果列——国家名称
条件——
1、洲份是南美洲
2、人口>4千万
3、二者是且关系,缺一不可
查询逻辑——查询南美洲人口大于4千万的国家

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值