某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 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 |
Create table If Not Exists cinema (id int, movie varchar(255), description varchar(255), rating float(2, 1))
Truncate table cinema
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')
select * from cinema where description <>'boring' and mod(id,2)=1 order by rating desc
首先根据题目分析我们要做三件事,1找出不等于boring的电影,2电影的序号id为奇数,3按照rating排序.1,3很简单 <>boring 排除了无聊的电影,order by rating 对评分等级进行降序,分数高的排在上面解决,然后是2,可能很多小伙伴有思路但不知道具体怎么搞,或者不知道mod()函数,mod()函数其实就是一个取余函数
eg:mod(num1,num2)=0 num1 代表除数,num2代表被除数 0代表结果的余数,如果num1 除以num2 取的余数等于0 说明正好除尽,没有余数,如果等于1则说明有余数,这个题目我们判断奇偶其实就是判断序号除以2是否能除尽,所以用mod(id,2)=1来筛选为奇数的序号,结束.