【力扣白嫖日记】1341.电影评分

前言

练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。

今日题目:

1341.电影评分
表:Movies

列名类型
movie_idint
titlevarchar

movie_id 是这个表的主键(具有唯一值的列)。
title 是电影的名字。

表:Users

列名类型
user_idint
namevarchar

user_id 是表的主键(具有唯一值的列)。

表:MovieRating

列名类型
movie_idint
user_idint
ratingint
created_atdate

(movie_id, user_id) 是这个表的主键(具有唯一值的列的组合)。这个表包含用户在其评论中对电影的评分 rating 。created_at 是用户的点评日期。

请你编写一个解决方案:

  • 查找评论电影数量最多的用户名。如果出现平局,返回字典序较小的用户名。
  • 查找在 February 2020 平均评分最高 的电影名称。如果出现平局,返回字典序较小的电影名称。字典序 ,即按字母在字典中出现顺序对字符串排序,字典序较小则意味着排序靠前。

我那不值一提的想法:

  • 首先梳理表内容,题干一共给了三张表,一张电影表,记录了电影id,电影名第二张用户表,记录了用户id,用户名,第三张评分表,记录了电影id,用户id,评分以及评分日期
  • 其次分析需求:需要查找评论电影最多的用户名,如何出现平局,返回字典次序小的用户
  • 查找在 February 2020 平均评分最高 的电影名称。如果出现平局,返回字典序较小的电影名称。字典序 ,即按字母在字典中出现顺序对字符串排序,字典序较小则意味着排序靠前
  • 那么观察结果集后发现明显是由两个查询结果拼接而成
    #这里首先查询评论电影最多的用户名
select u.name as results
from MovieRating m 
left join Users u
on m.user_id = u.user_id
group by m.user_id
having count(rating) = 
(
    select count(rating) as max_count
    from MovieRating
    group by user_id
    order by count(rating) desc
    limit 1
) 
order by u.name
limit 1

然后查询2月平均评分最高的电影

select m1.title as results
from MovieRating m 
left join Movies m1 
on m.movie_id = m1.movie_id
where substr(created_at,1,7) = "2020-02"
group by m.movie_id
having avg(m.rating) =
(
    select avg(rating)
    from MovieRating
    where substr(created_at,1,7) = "2020-02"
    group by movie_id
    order by avg(rating) desc
    limit 1
)
order by m1.title 
limit 1
  • 将两个结果拼接起来
(select u.name as results
from MovieRating m 
left join Users u
on m.user_id = u.user_id
group by m.user_id
having count(rating) = 
(
    select count(rating) as max_count
    from MovieRating
    group by user_id
    order by count(rating) desc
    limit 1
) 
order by u.name
limit 1)

union all

(select m1.title as results
from MovieRating m 
left join Movies m1 
on m.movie_id = m1.movie_id
where substr(created_at,1,7) = "2020-02"
group by m.movie_id
having avg(m.rating) =
(
    select avg(rating)
    from MovieRating
    where substr(created_at,1,7) = "2020-02"
    group by movie_id
    order by avg(rating) desc
    limit 1
)
order by m1.title 
limit 1
)

在最开始的时候,我的两个查询结果没有加括号,运行结果就一出错,也不知道啥原因,后面看了题解发现加了括号就可以了,然后再网上查阅了资料发现可能union all优先级较低,如果不加括号,可能会出现语序逻辑的问题,所以加上括号,可以确保两个查询被作为一个整体进行 UNION ALL 操作。


结果:

在这里插入图片描述


总结:

能运行就行。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/452578.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

制作图片马:二次渲染(upload-labs第17关)

代码分析 $im imagecreatefromjpeg($target_path);在本关的代码中这个imagecreatefromjpeg();函数起到了将上传的图片打乱并重新组合。这就意味着在制作图片马的时候要将木马插入到图片没有被改变的部分。 gif gif图的特点是无损,我们可以对比上传前后图片的内容…

上海亚商投顾:沪指震荡调整 飞行汽车概念股持续爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整,深成指走势稍强,创业板指一度涨超1%,黄白二线走势分化&a…

每3秒一例骨折!别把骨质疏松不当病,新设备「双能X线骨密度仪」为您的健康加“骨”劲

随着社会老龄化日益加剧,我国骨质疏松患者人数已居世界首位。骨质疏松症已成为对中老年健康构成严重威胁的慢性疾病,且存在诊断率低、治疗率低、长期药物治疗依从性低的三低问题。 很多人认为的骨质疏松是一种老化的自然现象不同,这其实是一种…

springboot267大学生科创项目在线管理系统的设计与实现

# 大学生科创项目在线管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装大学生科创项目在…

Spring Schedule:Spring boot整合Spring Schedule实战讲解定时发送邮件的功能

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…

【C++教程从0到1入门编程】第九篇:STL中Vector类

一、vector的介绍 1.vector的介绍 vector是表示可变大小数组的序列容器。 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的&…

如何处理爬虫代理的404错误

目录 前言 一、什么是404错误 二、处理404错误的方法 1. 重新尝试请求 2. 使用备用代理 3. 日志记录 总结 前言 在进行网络爬虫开发过程中,经常会遇到一些特殊的错误,例如404错误。当我们使用代理服务器进行网络爬取时,有时候会遇到4…

vMware WorkStation创建虚拟机安装CentOS7,NAT模式配置网络

一、安装虚拟机 1、选择典型(推荐)配置 2、选择稍后安装操作系统 3、操作系统选择CentOS7 64位 4、虚拟机命名、选择安装位置 6、指定磁盘容量 7、指定磁盘容量 步骤: (1)、系统内存2GB (2)、…

vue项目:webpack打包优化实践

本文目录 一、项目基本信息二、分析当前项目情况1、使用 webpack-bundle-analyzer 插件2、使用 speed-measure-webpack-plugin 插件 三、解决构建问题1、caniuse-lite 提示的问题2、 warning 问题 四、打包速度优化1、修改source map2、处理 loader 五、webpack性能优化1、使用…

P4551 最长异或路径

最长异或路径 题目描述 给定一棵 n n n 个点的带权树,结点下标从 1 1 1 开始到 n n n。寻找树中找两个结点,求最长的异或路径。 异或路径指的是指两个结点之间唯一路径上的所有边权的异或。 输入格式 第一行一个整数 n n n,表示点数…

Threejs粒子水波纹效果

依赖 three(这个重要)react (这个不重要)ahooks(这个不重要)unocss(这个不重要) 效果 代码 import React, { useEffect, useRef } from react; import { useGetState } from ahoo…

视频AI方案:数据+算力+算法,人工智能的三大基石

背景分析 随着信息技术的迅猛发展,人工智能(AI)已经逐渐渗透到我们生活的各个领域,从智能家居到自动驾驶,从医疗诊断到金融风控,AI的应用正在改变着我们的生活方式。而数据、算法和算力,正是构…

基于SpringBoot+MYSQL的社区团购系统

目录 1、前言介绍 2、主要技术 3、系统流程分析 3.1、注册流程 3.2、登录流程 3.3、购买流程 4、系统设计 4.1、系统结构设计 4.2、系统顺序图 4.2.1、登录模块顺序图 4.2.2、添加信息模块顺序图 4.3、数据库设计 4.3.1、数据库E-R图设计 4.3.2、数据库表设计 5、…

找不到mfc140u.dll怎么办?修复缺失mfc140u.dll的多种方案分享

mfc140u.dll文件是一个重要的动态链接库文件,它在Windows操作系统中发挥着关键的作用。由于各种原因,例如应用程序冲突或系统错误等,mfc140u.dll文件有时会出现丢失的情况。一旦发生这种问题,运行依赖此文件的应用程序将无法正常启…

(2)(2.12) Robsense SwarmLink

文章目录 前言 1 规格(根据制造商提供) 2 EasySwarm 3 参数说明 前言 Robsense SwarmLink 遥测无线电可将多架无人机连接到一个地面站,而无需在地面站一侧安装多个无线电(即创建一个网状网络)。此外,还…

解决vue2+elementUI的下拉框出现自动校验的问题

问题: 总结原因是因为新增的时候,传了空值进去 可以这样子解决 this.formData.value && this.$set(this.model, this.formData.key, this.formData.value)这种是只有值存在的时候才会给他赋值,但是这只解决单选下拉框,…

精读《正交的 React 组件》

1 引言 搭配了合适的设计模式的代码,才可拥有良好的可维护性,The Benefits of Orthogonal React Components 这篇文章就重点介绍了正交性原理。 所谓正交,即模块之间不会相互影响。想象一个音响的音量与换台按钮间如果不是正交关系&#xf…

10、Redis分布式系统之数据分区算法

Redis分布式系统之数据分区算法 1、什么是Redis分布式系统 ​ Redis分布式系统,官方称为Redis Cluster, Redis集群(这个集群和前面的主从复制集群不同,这个集群可以理解为是多个主从复制集群所组成的集群),其实是Red…

保研复习数据结构记(4)--树(二叉树、线索树、哈夫曼树,并查集)

一.树的基本术语 1.树 什么是空树?结点数为0的树非空树的特性?有且仅有一个根结点,没有后继的结点称为“叶子结点”,有后继的结点称为“分支结点”,除了根结点外任何一个结点都有且仅有一个前驱,每个结点…

VS 调试Hololens 2工程报错 有未经处理的异常: Microsoft C++ 异常:

原因是unity 少安装了XR工具包 安装完后重新用unity打包,然后vs打开打包出来的工程,电脑和眼镜用usb连接,直接运行调试就可以了