news 2026/9/4 16:58:33

SQL 行转列(经典面试题)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL 行转列(经典面试题)

已知条件:

1. 学生表,字段为 学号和姓名

2. 课程表,字段为科目ID和科目名称

3. 成绩表 ,字段为学生学号,科目ID,成绩

现要得到如下查询结果

解答:

1. 先对score 表进行行转列,将科目名称作为列名,成绩作为数据进行展示。

select sid, max(case when cid = '1' then score else 0 end ) as '语文', max(case when cid = '2' then score else 0 end ) as '数学', max(case when cid = '3' then score else 0 end ) as '英语' from score group by sid

得到的结果如下

其中 max 函数配合case when使用,例如当cid=1时取score,其他科目成绩设为0,再取最大值就得到了语文成绩的值,最后将列命名为 '语文',以此类推。

group by sid 是要以学生学号进行分组,否则只能查出一条数据。

2. 得到上一步的结果后其实很容易就想到再连接学生表查询即可

select stu.sid, stu.sname, max(case when cid = '1' then score else 0 end ) as '语文', max(case when cid = '2' then score else 0 end ) as '数学', max(case when cid = '3' then score else 0 end ) as '英语' from score sco left join student stu on stu.sid = sco.sid group by sid

最终得到要求的结果

补充:查询出 语文成绩高于数学成绩的记录

select stu.sid, stu.sname, max(case when cid = '1' then score else 0 end ) as '语文', max(case when cid = '2' then score else 0 end ) as '数学', max(case when cid = '3' then score else 0 end ) as '英语' from score sco left join student stu on stu.sid = sco.sid group by sid having `语文` > `数学`

此处使用 having 对分组后的数据进行过滤。

得到如下结果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 12:42:39

基于Java的学生考勤系统设计与实现:Spring Boot+MyBatis全解析

简介:Java后端开发中,权限管理与数据库设计是构建企业级应用的核心基础。Spring Boot作为当前主流的Java开发框架,通过自动配置与starter机制大幅简化了项目搭建;MyBatis则凭借灵活的SQL控制能力,在复杂业务报表查询中…

作者头像 李华
网站建设 2026/9/2 7:42:34

ROS2 Humble激光雷达仿真工程:多线雷达+Gazebo模块化架构

简介:本资源是一个面向ROS2初学者与机器人仿真开发者的实践型工程包,聚焦多线激光雷达在Gazebo中的建模与仿真应用,解决SLAM、定位与环境感知等任务的前期验证难题。压缩包共30个文件(62KB),涵盖12个xacro宏…

作者头像 李华
网站建设 2026/8/30 20:57:48

Day 30:Client 端总览 — Web UI 前端架构

Day 30:Client 端总览 — Web UI 前端架构 今日目标 理解 dsh 前端的整体架构 读 packages/client/ 的目录结构 理解前端的分层架构(通信层/运行时层/UI 渲染层/插槽系统) 理解前端和 Host 端的通信方式 理解前端的技术栈(框架/构建工具/状态管理) 理解前端的启动流程 理…

作者头像 李华
网站建设 2026/8/31 1:25:12

STM32实战笔记:从ADC采样到温度校准,精准获取MCU内部温度

1. STM32内部温度传感器基础认知第一次接触STM32内部温度传感器时,我误以为它和外部DS18B20这类传感器类似,结果踩了个大坑。实际上这个传感器是直接集成在芯片晶圆上的,主要用途是监测CPU核心温度而非环境温度。它的输出电压会随晶圆温度变化…

作者头像 李华
网站建设 2026/8/31 13:08:34

纯Rust沙箱化本地优先浏览器,为AI Agent打造轻量级网页访问内核

大家在做 AI Agent 的时候,是不是经常被“让 Agent 打开网页”、“让 Agent 获取某个页面内容”这种需求卡住?传统方案要么是模拟浏览器控制(Playwright、Selenium),要么是嵌一个 Chromium 实例,重量级不说…

作者头像 李华
网站建设 2026/9/2 7:23:18

从论文到原型如何借鉴竞品

从论文到原型如何借鉴竞品论文、开源实现和竞品都能帮助团队缩短摸索时间,但它们解决的问题不同。论文通常说明一种方法在特定数据、指标和实验设置下是否有效;竞品展示的是一套面向用户的取舍;原型要面对的则是当前团队的技术、数据、时间和…

作者头像 李华