题目一:可回收且低脂的产品
题目要求:
编写解决方案找出既是低脂又是可回收的产品编号。
返回结果 无顺序要求 。
表结构:
运行结果示例:
思路:
使用where子句限定查询条件即可
运行代码示例:
select product_id
from Products
where low_fats = 'Y' and recyclable = 'Y'
题目二:寻找用户推荐人
题目要求:
找出那些 没有被
id = 2
的客户 推荐 的客户的姓名。以 任意顺序 返回结果表。
表结构:
运行结果示例:
思路:
这道题目本身比较简单,考察了where子句中的不等于的用法。但是仔细观察示例后就可以发现,存在referee_id为null的情况,我们在直接运行SELECT name FROM customer WHERE referee_Id <> 2;这句代码时,也只能查询到Zack这一个人,不会查询到referee_id为null的情况。因此我们需要额外对这种情况进行考虑,也就是在where子句中额外加入referee_id is null的情况。需要注意对null的判断要用is 或is not,而不是= 、!=。
运行代码示例:
SELECT name FROM customer WHERE referee_id != 2 OR referee_id IS NULL;
题目三:大的国家
题目要求:
如果一个国家满足下述两个条件之一,则认为该国是 大国 :
- 面积至少为 300 万平方公里(即,
3000000 km2
),或者- 人口至少为 2500 万(即
25000000
)编写解决方案找出 大国 的国家名称、人口和面积。
按 任意顺序 返回结果表。
表结构:
运行结果示例:
思路:
这道题目也非常简单,只需要用where子句查询符合条件的数据即可,查询条件之间使用or连接
运行代码示例:
select name,population,area
from World
where area >= 3000000 or population >= 25000000
题目四:文章浏览
题目要求:
请查询出所有浏览过自己文章的作者
结果按照
id
升序排列。查询结果的格式如下所示:
表结构:
运行结果示例:
思路:
这道题需要查询出viewer_id 和author_id相同的行,需要注意的是1)结果要使用distinct关键字去重;2)对查询出的结果列使用as关键字起别名为id;3)结果按照id进行排序。这里我们可以使用子查询,比较viewer_id 和author_id是否相同,也可以使用where viewer_id = author_id直接进行判断。
运行代码示例:
select DISTINCT viewer_id as id
from Views
where viewer_id in (select author_id from Views)
order by viewer_id
题目五:无效的推文
题目要求:
查询所有无效推文的编号(ID)。当推文内容中的字符数严格大于
15
时,该推文是无效的。以任意顺序返回结果表。
表结构:
运行结果示例:
思路:
该题需要我们统计content字段中数据的长度,我们可以直接使用length()函数进行统计。
运行代码示例:
select tweet_id from Tweets where length(content) >15
- 拓展知识点:
1、char_length(str)
(1)计算单位:字符
(2)不管汉字还是数字或者是字母都算是一个字符
2、length(str)
(1)计算单位:字节
(2)utf8编码:一个汉字三个字节,一个数字或字母一个字节。
(3)gbk编码:一个汉字两个字节,一个数字或字母一个字节。