当前位置: 首页 > news >正文

SQL-每日一题【620.有趣的电影】

题目

某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述。

作为该电影院的信息部主管,您需要编写一个 SQL查询,找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 rating 排列。

例如,下表 cinema:

对于上面的例子,则正确的输出是为:

 

 

解题思路

前置知识

位运算

由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。

按位与(Bitwise AND),运算符号为&

a&b 的操作的结果:a、b中对应位同时为1,则对应结果位也为1、

例如:

对10101100000000进行右移8位得到的是101011,这就得到了a的8~15位的掩码了。那么根据这个启示,判断一个整数是否是处于 0-65535 之间(常用的越界判断):

用一般的 (a >= 0) && (a <= 65535) 可能要两次判断。

改用位运算只要一次:

a & ~((1 << 16)-1)

后面的常数是编译时就算好了的。其实只要算一次逻辑与就行了。

             

常用技巧:

1、  用于整数的奇偶性判断

一个整数a, a & 1 这个表达式可以用来判断a的奇偶性。二进制的末位为0表示偶数,最末位为1表示奇数。使用a%2来判断奇偶性和a & 1是一样的作用,但是a & 1要快好多。

 

知道了位运算后,我们一起来看这道题

1.题目要求求出 所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,首先我们用位运算筛选出 id 为单数的影片,利用 id & 1,当 id 为单数时返回1,id 为偶数时返回 0。

2.筛选出 id 为单数的影片后,我们再对其进行筛选,找到 description 不等于 boring 的影片,最后按照 rating 进行降序排序,返回影片的全部信息即可。

代码实现

select * 
from cinema 
where id & 1
and  description != 'boring'
order by rating desc

测试结果

 

http://www.lryc.cn/news/100666.html

相关文章:

  • linux 精华总结
  • Eureka 学习笔记2:客户端 DiscoveryClient
  • okhttp原理分析
  • freeswitch的mod_xml_curl模块
  • 高速数据采集专家-FMC140【产品手册】
  • 【SSM】知识集锦
  • Flowable-中间事件-信号中间抛出事件
  • 【算法基础:动态规划】5.3 计数类DP(整数拆分、分拆数)
  • 封装(Encapsulation)
  • php 原型模式
  • LiveGBS流媒体平台GB/T28181功能-支持轮巡播放分屏轮巡值守播放监控视频轮播大屏轮询播放
  • 6、Nginx实现反向代理
  • Leetcode——404 左叶子之和
  • R并行计算-parallel例子1
  • JavaSE复盘2
  • 如何在3ds max中创建可用于真人场景的巨型机器人:第 3 部分
  • Android性能优化之游戏引擎初始化ANR
  • Jmap-JVM(十六)
  • 【分布式能源的选址与定容】基于多目标粒子群算法分布式电源选址定容规划研究(Matlab代码实现)
  • flink源码分析-获取JVM最大堆内存
  • 第17节 R语言分析:生物统计数据集 R 编码分析和绘图
  • 一文了解什么是Selenium自动化测试?
  • java接口实现
  • 数据结构入门指南:链表(新手避坑指南)
  • SpringBoot第24讲:SpringBoot集成MySQL - MyBatis XML方式
  • linux 查看网卡,网络情况
  • 在Mac上搭建Gradle环境
  • Docker网络与Docker Compose服务编排
  • opencv+ffmpeg环境(ubuntu)搭建全面详解
  • 开发基于 LoRaWAN 的设备须知--最大兼容性