题解 | #考试分数(二)#

考试分数(二)

https://www.nowcoder.com/practice/f456dedf88a64f169aadd648491a27c1

select t.id, t.job,t.score from (
                            select *,avg(score) over (partition by job) avg_  from grade 
) as t
where t.score > t.avg_
order by t.id

三种方式:子查询,内连接,窗口函数

法一:窗口函数

如上【大概意思就是从窗口函数里取】

法二:内连接

select t1.* from grade t1

left join (select job,avg(score) avg_from grade group by job) t2

on t1.job=t2.job

where t1.score>t2.avg_

order by t1.id

法三:子查询

select * from grade t1

where score>(select avg(score) from grade t2

where t1.job=t2.job)#一定不要忘where t1.job=t2.job,否则报错

order by id asc

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务