首页 > 其他分享 >1341. 电影评分 - 力扣(LeetCode)

1341. 电影评分 - 力扣(LeetCode)

时间:2024-12-11 22:01:56浏览次数:7  
标签:insert 1341 into id 力扣 values user movie LeetCode

  1. 1341. 电影评分 - 力扣(LeetCode)

  2. 目标

    1. 输入

      输入:评分表
      movie_iduser_idratingcreated_at
      1132020/1/12
      1242020/2/11
      1322020/2/12
      1412020/1/1
      2152020/2/17
      2222020/2/1
      2322020/3/1
      3132020/2/22
      3242020/2/25
      输入:用户表
      user_idname
      1Daniel
      2Monica
      3Maria
      4James
      输入:电影表
      movie_idtitle
      1Avengers
      2Frozen 2
      3Joker
    2. 输出

      result
      Daniel
      Frozen 2
  3. 分析

    请你编写一个解决方案:
    查找评论电影数量最多的用户名。如果出现平局,返回字典序较小的用户名。
    查找在 February 2020 平均评分最高 的电影名称。如果出现平局,返回字典序较小的电影名称。
    字典序 ,即按字母在字典中出现顺序对字符串排序,字典序较小则意味着排序靠前。
    输入:评分表输入:用户表输入:电影表输出:result表
    movie_iduser_idratingcreated_atuser_idnamemovie_idtitleresult
    1132020/1/121Daniel1AvengersDaniel
    1242020/2/112Monica2Frozen 2Frozen 2
    1322020/2/123Maria3Joker
    1412020/1/14James
    2152020/2/17
    2222020/2/1
    2322020/3/1
    3132020/2/22
    3242020/2/25
    按用户名分组计数评论次数并按照字典序排列namecntnum按电影名分组计算再February 202平均评分并按照字典序排序titleavgrn分别查询num和rn为1的用户名和电影名使用全连接UNION ALL连接结果result
    Daniel31Frozen 23.51Daniel
    Monica32Joker3.52Frozen 2
    Maria23Avengers2.53
    James14
  4. 实现

    DROP TABLE IF EXISTS Movies;
    DROP TABLE IF EXISTS Users;
    DROP TABLE IF EXISTS MovieRating;
    Create table If Not Exists Movies (movie_id int, title varchar(30));
    Create table If Not Exists Users (user_id int, name varchar(30));
    Create table If Not Exists MovieRating (movie_id int, user_id int, rating int, created_at date);
    Truncate table Movies;
    insert into Movies (movie_id, title) values ('1', 'Avengers');
    insert into Movies (movie_id, title) values ('2', 'Frozen 2');
    insert into Movies (movie_id, title) values ('3', 'Joker');
    Truncate table Users;
    insert into Users (user_id, name) values ('1', 'Daniel');
    insert into Users (user_id, name) values ('2', 'Monica');
    insert into Users (user_id, name) values ('3', 'Maria');
    insert into Users (user_id, name) values ('4', 'James');
    Truncate table MovieRating;
    insert into MovieRating (movie_id, user_id, rating, created_at) values ('1', '1', '3', '2020-01-12');
    insert into MovieRating (movie_id, user_id, rating, created_at) values ('1', '2', '4', '2020-02-11');
    insert into MovieRating (movie_id, user_id, rating, created_at) values ('1', '3', '2', '2020-02-12');
    insert into MovieRating (movie_id, user_id, rating, created_at) values ('1', '4', '1', '2020-01-01');
    insert into MovieRating (movie_id, user_id, rating, created_at) values ('2', '1', '5', '2020-02-17');
    insert into MovieRating (movie_id, user_id, rating, created_at) values ('2', '2', '2', '2020-02-01');
    insert into MovieRating (movie_id, user_id, rating, created_at) values ('2', '3', '2', '2020-03-01');
    insert into MovieRating (movie_id, user_id, rating, created_at) values ('3', '1', '3', '2020-02-22');
    insert into MovieRating (movie_id, user_id, rating, created_at) values ('3', '2', '4', '2020-02-25');
    SELECT * FROM Movies;
    SELECT * FROM Users;
    SELECT * FROM MovieRating;
    SELECT name results
    FROM (SELECT Users.name,row_number()  OVER (ORDER BY count(*)DESC,name )num
    FROM movierating,users
    WHERE Users.user_id=MovieRating.user_id
    GROUP BY name)n
    WHERE num=1
    UNION ALL 
    SELECT title results
    FROM (SELECT title,row_number() OVER (ORDER BY avg(rating)DESC,title )rn
    FROM movierating,movies
    where Movies.movie_id=MovieRating.movie_id AND year(created_at)=2020 AND month(created_at)=2
    GROUP BY title )t
    WHERE rn=1;

  5. 小结

        使用row_number排序,union all全连接结果

标签:insert,1341,into,id,力扣,values,user,movie,LeetCode
From: https://blog.csdn.net/2301_78665414/article/details/144410658

相关文章

  • 626. 换座位 - 力扣(LeetCode)
    626.换座位-力扣(LeetCode)目标输入输入:座位表idstudent1Abbot2Doris3Emerson4Green5Jeames输出输出:新座位表idstudent1Doris2Abbot3Green4Emerson5Jeames分析编写解决方案来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。按id......
  • 每日力扣打卡93.复原IP地址
    题目:有效IP地址正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。例如:"0.1.2.201"和"192.168.1.1"是有效IP地址,但是"0.011.255.245"、"192.168.1.312"和"192.168@1.1"是无效IP地址。给定一个只包含数字的字符串s,用以表......
  • LeetCode - Hot100 - 1.两数之和
    前言本专栏主要通过“LeetCode热题100”,来捡起自己本科阶段的算法知识与技巧。语言主要使用c++/java。题目描述1.两数之和题目链接:https://leetcode.cn/problems/two-sum/?envType=study-plan-v2&envId=top-100-liked给定一个整数数组nums和一个整数目标值target,......
  • LeetCode | 斐波那契数
    Problem:509.斐波那契数题目斐波那契数(通常用F(n)表示)形成的序列称为斐波那契数列。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2),其中n>1给定n,请计算F(n)。示例1:输入:n=2输出:1解......
  • (nice!!!)(LeetCode 热题 100) 76. 最小覆盖子串(哈希表、滑动窗口、双指针)
    题目:76.最小覆盖子串思路:用哈希表来记录字符串t中字符出现的情况。然后用双指针来实现滑动窗口,找到最小的字符串即可。时间复杂度为0(m+n),细节看注释。classSolution{public:stringminWindow(strings,stringt){ //哈希表unordered_map<char......
  • leetcode面试经典 150 题第三题(26. 删除有序数组中的重复项)#更适合新手学习
     题目:26.删除有序数组中的重复项-力扣(LeetCode)给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nums 的唯......
  • LeetCode:2717、半有序队列
    题目:给你一个下标从0开始、长度为n的整数排列nums。如果排列的第一个数字等于1且最后一个数字等于n,则称其为半有序排列。你可以执行多次下述操作,直到将nums变成一个半有序排列:选择nums中相邻的两个元素,然后交换它们。返回使nums变成半有序排列所需的最......
  • leetcode61:旋转链表
    原题地址:61.旋转链表-力扣(LeetCode)题目描述给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例1:输入:head=[1,2,3,4,5],k=2输出:[4,5,1,2,3]示例2:输入:head=[0,1,2],k=4输出:[2,0,1]解题思路明确旋转规则:每次旋转,将......
  • 代码随想录算法训练营第四十三天|LeetCode300.最长递增子序列、LeetCode674.最长连续
    前言打卡代码随想录算法训练营第49期第四十三天 (๑ˉ∀ˉ๑)首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。LeetCode300......
  • 力扣-图论-8【算法学习day.58】
    前言###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!习题1.引爆最多的炸弹题目链接:2101.引爆最多的炸弹-力扣(Le......