题目描述

(通过次数123,750 | 提交次数160,379,通过率77.16%)

某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 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)
链接:https://leetcode.cn/problems/not-boring-movies
//测试数据
Create table If Not Exists cinema (id int, movie varchar(255), description varchar(255), rating float(2, 1));

insert into cinema (id, movie, description, rating) values ('1', 'War', 'great 3D', '8.9');
insert into cinema (id, movie, description, rating) values ('2', 'Science', 'fiction', '8.5');
insert into cinema (id, movie, description, rating) values ('3', 'irish', 'boring', '6.2');
insert into cinema (id, movie, description, rating) values ('4', 'Ice song', 'Fantacy', '8.6');
insert into cinema (id, movie, description, rating) values ('5', 'House card', 'Interesting', '9.1');

解题思路

cinema表中保存了所有的电影。

题目要求:筛选出同时满足如下两个条件的电影:

第一:影片描述为非boring;

这个条件比较简单,使用<>操作符即可实现。

第二:id为奇数;

奇数的特点是对2取余,余数为1。所以,这里需要使用取余函数MOD。

最后,再以rating倒序排序。

参考SQL

未特别说明的情况下,参考SQL为基于MySQL8.0实现。
select
    *
from cinema a
where description <> 'boring'
and mod(id,2) = 1
order by rating desc;
picture loss