持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
一、题目
某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述。
作为该电影院的信息部主管,您需要编写一个 SQL查询,找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 rating 排列。
例如,下表 cinema:
+---------+-----------+--------------+-----------+
| id | movie | description | rating |
+---------+-----------+--------------+-----------+
| 1 | War | great 3D | 8.9 |
| 2 | Science | fiction | 8.5 |
| 3 | irish | boring | 6.2 |
| 4 | Ice song | Fantacy | 8.6 |
| 5 | House card| Interesting| 9.1 |
+---------+-----------+--------------+-----------+
对于上面的例子,则正确的输出是为:
+---------+-----------+--------------+-----------+
| id | movie | description | rating |
+---------+-----------+--------------+-----------+
| 5 | House card| Interesting| 9.1 |
| 1 | War | great 3D | 8.9 |
+---------+-----------+--------------+-----------+
- 来源:力扣(LeetCode)
- 链接:leetcode.cn/problems/no…
- 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、解题
创建数据表
根据题意创建数据表,注意电影的等级参数这里是设置为Float(2,1)
CREATE TABLE IF NOT EXISTS cinema (
id INT,
movie VARCHAR(255),
description VARCHAR(255),
rating FLOAT(2,1)
)
INSERT INTO cinema VALUES
(1, 'War', 'great 3D', '8.9'),
(2, 'Science', 'fiction', '8.5'),
(3, 'irish', 'boring', '6.2'),
(4, 'Ice song', 'Fantacy', '8.6'),
(5, 'House card', 'Interesting', '9.1')
思考
- 本题比较简单,首先根据题意过滤description非boring的数据
- 这里使用description != 'boring'或者description <> 'boring'都可以
- 之后选择剩余数据中的id为奇数的值 id % 2 != 0
- 最后对rating进行排序,倒序排列
代码
SELECT * FROM cinema WHERE description != 'boring' AND id % 2 != 0 ORDER BY rating DESC
SELECT * FROM cinema WHERE description <> 'boring' AND id % 2 != 0 ORDER BY rating DESC
三、执行结果
上图是描述判断的区别,似乎没有什么大的区别
四、总结
- <> 与 != 都是不等的意思,没有什么区别。同时也可以用not in来做判断
- ORDER BY是排序的意思,默认是降序
- DESC与ASC相反,一个降序一个升序
- 取余中这里是用%来处理,还可以使用MOD函数,它的作用就是查找一个数除以另外一个数的余数,如果除数为0,则返回Null