LeetCode#有趣的电影

92 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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

三、执行结果

image.png

image.png

上图是描述判断的区别,似乎没有什么大的区别

四、总结

  • <> 与 != 都是不等的意思,没有什么区别。同时也可以用not in来做判断
  • ORDER BY是排序的意思,默认是降序
  • DESC与ASC相反,一个降序一个升序
  • 取余中这里是用%来处理,还可以使用MOD函数,它的作用就是查找一个数除以另外一个数的余数,如果除数为0,则返回Null