【高频SQL基础题】1341.电影评分

本文讲述了在SQL查询中如何正确使用union和unionall合并搜索结果,避免在groupby中使用聚合函数,以及正确设置orderby和时间范围(如between2020-02-01and2020-02-28)。还介绍了字典序排序和左连接在查询中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

自寻。

解题思路:

通过union或union all 把两个独立的搜索结果合起来就行了。

1.group 里 不能用 聚合函数。

select user_id,count(user_id)as count from MovieRating group by user_id,count(user_id)  order by count

这样 才是对的

select user_id,count(user_id)as count from MovieRating group by user_id  order by count

1056 -Can't group on 'cou nt(user_id)’.   

应该是group 里 不能用 聚合函数。

2.这里的 as results 为啥是不对的?

select name,count(user_id)as count from MovieRating  group by name  order by count,title limit 1 as results

GPT给的回复是,limit已经限定了返回结果集的行数,不能再给results了。

其实是我results 位置加的不对。像下面这个加的位置才是对的。

select t.name as results from

(select u.name,count(mr.user_id)as count from MovieRating mr  left join Users u on u.user_id = mr.user_id group by mr.user_id  order by count(mr.user_id)desc ,u.name  limit 1 )t

3. between 时间的表述

不带这个不对。。

where mr.created_at between 2020-02-01 and 2020-02-28

要这样。

where mr.created_at between '2020-02-01' and '2020-02-28' 

4.union all 和 union 区别

union 是去重,而union all 是不去重,全部的都显示出来。

5.根据【字典序】的排列

其实就是order by  栏名 ,如果它是字符串,它会自己根据字典序排列的。

参考答案:

select t.name as results from

(select u.name,count(mr.user_id)as count from MovieRating mr  left join Users u on u.user_id = mr.user_id group by mr.user_id  order by count(mr.user_id)desc ,u.name  limit 1 )t

union all

select p.title as results from (

select mi.title,mr.movie_id,avg(mr.rating) as score from MovieRating mr left join Movies mi on mr.movie_id = mi.movie_id

where mr.created_at between '2020-02-01' and '2020-02-28'

  group by mr.movie_id order by avg(mr.rating) desc,title   limit 1  

) p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值