SQL 是作为开发工程师、数据工程师必须要深入掌握的一项技能。我也一直在提升这部分的能力,从入门到精通。除了阅读一些 SQL 经典书籍,刷题也是一个不错的选择。于是,我将做过的题目与解法,汇总到这里,和大家一起学习。
SQL 练习题系列和「体验碎片」系列一样,会不定期进行更新。
本期有 2 道题。
有趣的电影
问题:编写一个 SQL查询,找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 rating 排列。
预期结果
解法:
1.我们可以使用 id%2 = 1来确定奇数 id,也可以使用mod(id,2)=1 来判断是否为奇数;2.限制description <> 'boring' 找到不无聊的影片;3.使用order by对 rating 排序。
select id,movie,description,ratingfrom cinema where id%2 = 1 and description <> 'boring'order by rating desc
大的国家
问题:编写一个SQL查询,输出表中所有大国家的名称、人口和面积。
如果一个国家的面积超过 300 万平方公里,或者人口超过 2500 万,那么这个国家就是大国家。
预期结果
解法1:
使用 WHERE 子句过滤面积超过 300 万平方公里或人口超过 2500 万,使用or 连接即可。
select name,population,areafrom World where population > 25000000 or area > 3000000
解法2:
or 可能会导致索引失效,全盘扫描。代替方案为 union 关键字,union 会去重,union all 不会自动去重
select name,population,area from World where population>25000000 unionselect name,population,area from World where area>3000000
![87efef38-f116-eb11-8da9-e4434bdf6706.png](http://p05.5ceimg.com/content/87efef38-f116-eb11-8da9-e4434bdf6706.png)