行转列练习

文章展示了如何使用SQL创建一个教师课程表,并插入数据。接着,通过SQL查询对数据进行分组,利用CASE语句和SUM函数统计每个教师在一周中不同天有课的情况,生成教师序号、周一到周三的课程次数统计结果。

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

首先创建一个表SQL 如下

--创建表
create table tb_teacher_leson(tid int,week int,judge varchar2(5));
 
insert into tb_teacher_leson values(1,2,'有');
insert into tb_teacher_leson values(1,3,'有');
insert into tb_teacher_leson values(2,1,'有');
insert into tb_teacher_leson values(3,2,'有');
insert into tb_teacher_leson values(1,2,'有');
 
commit;

数据整体格式如下

我们想要的格式如下

 解析这些 首先 我们要对这个表划分一下粒度 老师是唯一的

根据老师id进行分组 

这样 就分成了三组 然后1号老师在week列 2出险过两次 我们可以采取sum函数进行汇总 当 week = 2 的时候 赋给1  出现过两次 就sum 1 + 1 = 2 

查询的sql如下

select decode(tid,'1','一号老师','2','二号老师','三号老师') as 老师序号
       ,sum(case week  when 1 then 1 else 0 end ) as 周一
       ,sum(case week  when 2 then 1 else 0 end ) as 周二
       ,sum(case week  when 3 then 1 else 0 end ) as 周三
from tb_teacher_leson
group by tid

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值