第三部分
SELECT FROM WORLD
这部分前面有些是对之前学习的一些回顾,就不全部放出来啦,然后依旧是select语句的应用,数据还是world数据。
1、从【world】数据中筛选出【name】列,【population】列和【gdp】列,其中【population】列以百万为单位,【gdp】列以十亿为单位,保留两位小数。
使用round函数:
例:ROUND(7253.86, 0) -> 7254
ROUND(7253.86, 1) -> 7253.9
ROUND(7253.86,-3) -> 7000
因此这道题可以写为:
SELECT name, round(population/1000000,2), round(gdp/1000000000,2)
FROM world
WHERE continent IN ('South America')
巩固一下:从【world】数据中筛选出【gdp】大于一万亿的【name】列和【gdp/population】列,其中【gdp/population】列四舍五入到千位(也就是四舍五入到最接近1000)。
select name,round(gdp/population, -3)
from world
where gdp>1000000000000
(另外,我在做题的时候发现select、from这些都是以大写出现的,但是自己敲代码就很麻烦,用小写试了一下发现也可以,对大小写不敏感)
2、显示是困难的题目hhhh,来看一下吧
从【world】数据中筛选出【name】列和【continent】列,但是需要将【continent】列中的“Oceania”换为“Australasia”。
(惊奇的发现有选择语句,我承认我小看sql了)
使用CASE语句:
用法: CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 ELSE def_value END
例子:CASE WHEN continent='Caribbean' THEN 'North America' ELSE continent END ---> 在continent列用 'North America'代替Caribbean'
有例子真的很好理解,动起小脑袋瓜举一反三吧!
SELECT name,
CASE WHEN continent='Oceania' THEN 'Australasia'
ELSE continent END
FROM world
WHERE name LIKE 'N%'
套娃1号
从【world】数据中筛选出【name】以字母“A”或“B”开头的【name】列和【continent】列,但是需要将【continent】列中的“Europe”和“Asia”换为“Eurasia”,将“North America”、“South America”和“Caribbean”换为“America”。
select name,
case when continent = 'Europe' or continent = 'Asia' then 'Eurasia'
when continent = 'North America' or continent = 'South America' or continent = 'Caribbean'
then 'America'
else continent end
from world
where name like 'A%' or name like 'B%'
也可以使用IN,写为:
select name,
case when continent in('Europe', 'Asia') then 'Eurasia'
when continent in ('North America','South America', 'Caribbean') then 'America'
else continent end
from world
where name like 'A%' or name like 'B%'
套娃2号
Put the continents right…
Oceania becomes Australasia
Countries in Eurasia and Turkey go to Europe/Asia
Caribbean islands starting with ‘B’ go to North America, other Caribbean islands go to South America
Show the name, the original continent and the new continent of all countries.
(太长了懒得翻译~)
我的代码如下,不知道哪里有问题但是没有返回表555~
select name,continent,
case when continent = 'Oceania' then 'Australasia'
when continent in ('Eurasia', 'Turkey') then 'Europe/Asia'
when continent = 'Caribbean islands' and name like 'B%' then 'North America'
when continent = 'Caribbean islands' then 'South America'
else continent end
from world
最后一部分也有人这样写:
WHEN continent='Caribbean' AND name NOT LIKE 'B%' THEN 'South America'
还有就是在这个部分发现case不能嵌套,也就是说不能写成:
case when continent = 'Caribbean islands' then
case when name like 'B%' then continent = 'North America'
else continent = 'South America' end
else continent end
这部分到这里就结束啦!