在练习sql语句的时候,sqlzoo是一个非常不错的练习地址:
SQLZOO:SELECt from WORLD Tutorial/zh - SQLZOO
今天我们对一些基本的select语句进行一些讲解(基于sqlzoo的题目)
1.在开始练习之前,先给出我们练习所需要用到的表:
| name | continent | area | population | gdp |
|---|---|---|---|---|
| Afghanistan | Asia | 652230 | 25500100 | 20343000000 |
| Albania | Europe | 28748 | 2831741 | 12960000000 |
| Algeria | Africa | 2381741 | 37100000 | 188681000000 |
| Andorra | Europe | 468 | 78115 | 3712000000 |
| Angola | Africa | 1246700 | 20609294 | 100990000000 |
以及每一个属性的含义:
name:國家名稱
continent:洲份
area:面積
population:人口
gdp:國內生產總值
2.练习语句:
找出有至少200百萬(2億)人口的國家名稱,及人均國內生產總值:
SELECT name, gdp/population FROM world
WHERe population>=200000000
在我们的查询属性之中,由于有一个是人均国内生产总值,而表格中并没有直接的属性,需要通过gdp除以人口population才可以得到,在直接select后面加上这个属性在sql中是被允许的。
找出有至少200百萬(2億)人口的國家名稱,及人均國內生產總值:
SELECT name, population/1000000 FROM world
WHERe continent = 'South America'
与上一题目类似,但是需要注意的是在where条件后的属性值需要跟上‘’,不然就无法显示结果,因为这不是数字的条件。
顯示包含單詞“United”為名稱的國家:
SELECt name FROM world
WHERe name like'%United%'
一个非常基本的查询条件里包含xx的语句。like的用法是:比如以a开头的词语,我们需要用a%,以a结尾的,用%a,如果有明确指出a是在前几位或者后几位,就在前面或者后面加多少个%。
美國、印度和中國(USA, India, China)是人口又大,同時面積又大的國家。排除這些國家。
顯示以人口或面積為大國的國家,但不能同時兩者。顯示國家名稱,人口和面積:
SELECt name, population, area
FROM (SELECt name, population, area FROM world
WHERe area > 3000000 or population > 250000000) as a
WHERe name not in ('United States', 'India', 'China')
难度加大,这一题的难点在于不是普通筛选获取条件,在from后我们加了一个更精确的查找条件,这也叫做嵌套查询,然后把查询到的条件重命名为一个a的表,这就是select as的用法,而不包含的用法则是not in 直接在要查查找的列名后面加上not in ,后面跟上条件就可以了。
*显示名称和大陆-但用欧亚代替欧洲和亚洲;替代美国-代表北美、南美或加勒比海的每个国家。显示以A或B开头的国家/地区:
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%'
比较难的题目,这个题目的要点是case when,要记住的一点就是:CASE WHEN条件表达式函数:类似JAVA中的IF ELSE语句。if else应该大家都会比较明白,结果为true,就then输出‘’,为false,就执行别的结果。
以上就是关于sqlzoo中基本的sql查询语句的一些例子了,想要练习更多的小伙伴可以点击开头的地址去进行练习。
关注我,了解更多sql,excel,python机器学习以及数据方面的知识。



