面试sql题

面试问的Sql:给你一个表里面有六列,第一列为学生id,其余五列为该学生的各科成绩,请你利用sql输出两列,第一列为学生id,第二列为该学生前三高的成绩拼接
这个咋写,有牛油会嘛,说下思路也行
全部评论
SELECT stu_id ,CONCAT( MAX(CASE WHEN rnk = 1 THEN score END),'|' ,MAX(CASE WHEN rnk = 2 THEN score END),'|' ,MAX(CASE WHEN rnk = 3 THEN score END) ) AS top_grade FROM ( SELECT * ,row_number() over(PARTITION BY gt.stu_id ORDER BY score DESC) AS rnk FROM ( SELECT stu_id, '语文' AS SUBJECT, cn_grade AS score FROM grade UNION ALL SELECT stu_id, '数学' AS SUBJECT, mat_grade AS score FROM grade UNION ALL SELECT stu_id, '英语' AS SUBJECT, en_grade AS score FROM grade UNION ALL SELECT stu_id, '物理' AS SUBJECT, phcs_grade AS score FROM grade UNION ALL SELECT stu_id ,'化学' AS SUBJECT, chmc_grade AS score FROM grade ) gt ORDER BY stu_id ) a GROUP BY stu_id
5 回复 分享
发布于 2023-08-16 10:46 上海
先用窗口函数求出各个学生前三高的成绩 然后用group_concat函数聚合
2 回复 分享
发布于 2023-08-10 21:41 北京
那个公司呀
点赞 回复 分享
发布于 2023-08-28 17:20 陕西

相关推荐

01-30 09:45
燕山大学 Java
喵_coding:这种直接跑就完事了 哪有毕业了才签合同 任何offer和三方都没有的
点赞 评论 收藏
分享
2025-12-28 22:19
门头沟学院 Java
不敢追165女神:简历写得毫无特点,你说你要是大二或者大三找寒假实习到暑期实习这段时间,你的简历还能约到面试。但是你是研究生哥,面试官不会因为你是研究生而降低要求,反而会觉得你是研究生才学了这么一点?为什么我不找个同阶段的本科生?
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
2
29
分享

创作者周榜

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