SQL-每日一题【1341. 电影评分】

这篇具有很好参考价值的文章主要介绍了SQL-每日一题【1341. 电影评分】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

表:Movies

SQL-每日一题【1341. 电影评分】,SQL每日一题,sql,数据库

表:Users

SQL-每日一题【1341. 电影评分】,SQL每日一题,sql,数据库 

请你编写一个解决方案:

  • 查找评论电影数量最多的用户名。如果出现平局,返回字典序较小的用户名。
  • 查找在 February 2020 平均评分最高 的电影名称。如果出现平局,返回字典序较小的电影名称。

字典序 ,即按字母在字典中出现顺序对字符串排序,字典序较小则意味着排序靠前。

返回结果格式如下例所示。

示例 1:

SQL-每日一题【1341. 电影评分】,SQL每日一题,sql,数据库

SQL-每日一题【1341. 电影评分】,SQL每日一题,sql,数据库 

SQL-每日一题【1341. 电影评分】,SQL每日一题,sql,数据库  

 文章来源地址https://www.toymoban.com/news/detail-662373.html

解题思路

1.题目要求我们查找评论电影数量最多的用户名和在 February 2020 平均评分最高 的电影名称,并且按要求返回。对于查询字段不同的题目,我们可以分别进行查询后再将两个答案联合在一起。

2.首先我们查询评论电影数量最多的用户名,我们先将movieRating表和users表进行左连接,连接条件是user_id相等,然后我们按照user_id将记录进行分组,用count(*)计算出每一组的记录数,使用降序排序,再使用name的字典顺序进行排序,返回第一条记录。

3.其次我们再查询在 February 2020 平均评分最高 的电影名称,我们也是先将MovieRating表和movie表进行左连接,连接条件是 movie_id 相等,然后将日期规定在‘2020-02’,最后按照movie_id进行分组 计算出每一组的平均值,先按平均值的降序排序,再按title的字典顺序排序,返回第一条记录

4.最后我们将查询到的两个结果进行联合,注意这里我们要使用 union all 而不是 union 是因为在使用 union 时,若电影的 title 和观看者的 name 相同时,只会显示一条记录。而 union all 则会全部显示。 

代码实现

(select u.name as results
from MovieRating as m
left join users as u 
on m.user_id = u.user_id
group by m.user_id
order by count(*) desc, u.name
limit 1)
union all
(select mo.title
from MovieRating as m
left join movies as mo
on m.movie_id = mo.movie_id
where m.created_at like '2020-02%'
group by mo.movie_id
order by avg(m.rating) desc, mo.title
limit 1)

测试结果

SQL-每日一题【1341. 电影评分】,SQL每日一题,sql,数据库

 

到了这里,关于SQL-每日一题【1341. 电影评分】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL-每日一题【1193. 每月交易 I】

    Table:  Transactions 编写一个 sql 查询来查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。 以 任意顺序 返回结果表。 查询结果格式如下所示。 示例 1:     1.题目要求我们查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额

    2024年02月13日
    浏览(35)
  • SQL-每日一题【550.游戏玩法分析Ⅳ】

    Table:  Activity 编写一个 SQL 查询,报告在首次登录的第二天再次登录的玩家的比率,四舍五入到小数点后两位。换句话说,您需要计算从首次登录日期开始至少连续两天登录的玩家的数量,然后除以玩家总数。 查询结果格式如下所示:   前置知识 1.ROUND() 函数 ROUND() 函数用于

    2024年02月13日
    浏览(42)
  • SQL-每日一题【584.寻找用户推荐人】

    给定表  customer  ,里面保存了所有客户信息和他们的推荐人。 写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都  不是  2。 对于上面的示例数据,结果为:    1.题目要求查询列表中客户的推荐人的编号都  不是  2 和为 null 的客户。我们直接使用 where

    2024年02月13日
    浏览(37)
  • SQL-每日一题【1158. 市场分析 I】

    Table:  Users Table:  Orders   Table:  Items   请写出一条SQL语句以查询每个用户的注册日期和在  2019   年作为买家的订单总数。 以  任意顺序  返回结果表。 查询结果格式如下。 示例 1:   1.题目要求我们查询每个用户的注册日期和在  2019   年作为买家的订单总数。我们可以将

    2024年02月14日
    浏览(38)
  • SQL-每日一题【585.2016年的投资】

    Insurance  表: 请你编写一个 SQL 查询,报告 2016 年 (tiv_2016) 所有满足下述条件的投保人的投保金额之和: 他在 2015 年的投保额 (tiv_2015) 至少跟一个其他投保人在 2015 年的投保额相同。 他所在的城市必须与其他投保人都不同(也就是说 (lat, lon) 不能跟其他任何一个投保人完全

    2024年02月17日
    浏览(44)
  • SQL-每日一题【1173. 即时食物配送 I】

     配送表:  Delivery 如果顾客期望的配送日期和下单日期相同,则该订单称为 「即时订单」,否则称为「计划订单」。 查询即时订单所占的百分比, 保留两位小数。 查询结果如下所示。 示例 1:     1.题目要求我们查询出顾客期望的配送日期和下单日期相同的记录所占百分比

    2024年02月14日
    浏览(45)
  • SQL-每日一题【1484. 按日期分组销售产品】

    表  Activities : 编写解决方案找出每个日期、销售的不同产品的数量及其名称。 每个日期的销售产品名称应按词典序排列。 返回按  sell_date  排序的结果表。 结果表结果格式如下例所示。 示例 1:     前置知识 group_concat函数的功能 将group by产生的同一个分组中的值连接起来

    2024年02月13日
    浏览(43)
  • SQL-每日一题【1517. 查找拥有有效邮箱的用户】

    表:  Users 编写一个解决方案,以查找具有有效电子邮件的用户。 一个有效的电子邮件具有前缀名称和域,其中:   前缀  名称是一个字符串,可以包含字母(大写或小写),数字,下划线  \\\'_\\\'  ,点  \\\'.\\\'  和/或破折号  \\\'-\\\'  。前缀名称  必须  以字母开头。 域  为  \\\'@le

    2024年02月12日
    浏览(43)
  • SQL-每日一题【1068. 产品销售分析 I】

    销售表  Sales : 产品表  Product :   写一条SQL 查询语句获取 Sales 表中所有产品对应的 产品名称 product_name 以及该产品的所有 售卖年份 year 和 价格 price 。 查询结果中的顺序无特定要求。 查询结果格式示例如下:   1.题目要求我们查询出 Sales 表中所有产品对应的 产品名

    2024年02月15日
    浏览(47)
  • 【Hive SQL 每日一题】统计用户连续下单的日期区间

    测试数据 需求说明 统计用户连续下单的日期区间,所以连续的下单日期必须 = 2 ,例如: 2023-01-01,2023-01-02 。 分析步骤如下: 按 user_id 、 order_date 进行分组,同天的下单日期只保留一条。 使用 row_number 窗口函数对行号进行标记。 使用 date_sub 函数与行号标记进行运算,如果

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包