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

考试分数(二)

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

全部评论

相关推荐

投递网易等公司10个岗位
点赞 评论 收藏
分享
09-25 00:00
已编辑
电子科技大学 Java
球球与墩墩:这不是前端常考的对象扁平化吗,面试官像是前端出来的 const flattern = (obj) => { const res = {}; const dfs = (curr, path) => { if(typeof curr === 'object' && curr !== null) { const isArray = Array.isArray(curr); for(let key in curr) { const newPath = path ? isArray ? `${path}[${key}]` : `${path}.${key}` : key; dfs(curr[key], newPath); } } else { res[path] = curr } } dfs(obj); return res; }
查看3道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务