SQL语句:把统计结果按照特定的列值转换成多列

要求:查询每个老师所带毕业设计的汇总情况,毕业设计学生分本科、专科,院外、院内,要求得到的结果形式如下:

教师名 院内本科 园内专科 院外本科 院外专科 合计

相关的表有:学生表(包含学生层次)、教师表(教师名)、学生课题表(学生教师对应关系以及院内院外信息)。

SQL语句如下:

select

teacher.teacher_name,ifnull(c1.c,0) v1,ifnull(c2.c,0) v2,ifnull(c3.c,0) v3,ifnull(c4.c,0) v4,
(ifnull(c1.c,0)+ifnull(c2.c,0)+ifnull(c3.c,0)+ifnull(c4.c,0)) sum

from teacher

left outer join
(

select

teacher_id,count(*) c

from

taskbook,student
where

taskbook.taskbook_inner_task='院内' and degree_id>1 and student.student_id=taskbook.student_id
group by

teacher_id

) c1 using(teacher_id)

left outer join
(

select

teacher_id,count(*) c

from

taskbook,student
where

taskbook.taskbook_inner_task='院内' and degree_id=1 and student.student_id=taskbook.student_id
group by

teacher_id

) c2 using(teacher_id)

left outer join
(

select

teacher_id,count(*) c

from

taskbook,student
where

taskbook.taskbook_inner_task='院外' and degree_id>1 and student.student_id=taskbook.student_id
group by

teacher_id

) c3 using(teacher_id)

left outer join
(

select

teacher_id,count(*) c

from

taskbook,student
where

taskbook.taskbook_inner_task='院外' and degree_id=1 and student.student_id=taskbook.student_id
group by teacher_id

) c4 using(teacher_id);

类似的问题有:在一个表中存储了学生的所有选修课程成绩,典型的列有:学号、课程号、成绩。需要得到的结果如下:

学号 课程1成绩 课程2成绩 课程3成绩

S32K系列之PDB框图详解及PDB触发ADC 可编程延迟模块PDB,PDB可提供从内部或外部触发或可编程间隔信号到ADC硬件触发输入的可控制延迟。 PDB可以选择提供脉冲输出,用作CMP块中的采样窗口。 S32K系列的PDB资源如下表: PDB功能框图 在下图中,以下字母表示的意义: N:PDB通道的总数 n:PDB通道号,范围从0到N-1 M:每个PDB通道的总可用预触发 m:预触发编号,范围从0到M-1 Y:脉冲输出的总数 y:脉冲数... 阅读详情

相关推荐

SQLServer将一列分成多列

中间部分查询可以做视图 SELECT PEAppM0b02,COUNT([COUNT])[COUNT],CourseName,COUNT(A)A,COUNT(B)B,COUNT(C)C,COUNT(D)D FROM ( SELECT PEAppM0b02,COUNT([COUNT])[COUNT],CourseName, CASE PEAppM0b162 WHEN '一等奖' THEN PE...

Laaguid的博客 4821

施耐德 Modicon M580 ePAC 项目实战:从硬件选型到 Control Expert V15 组态

本文详细解析了施耐德 Modicon M580 ePAC 在工业自动化项目中的实战应用,从硬件选型到 Control Expert V15 组态的全流程。重点介绍了水处理站控制系统的硬件配置、网络架构设计、软件安装授权及程序框架开发,帮助工程师高效实施中大型控制系统项目。

weixin_33701617的博客 328

使用decode函数将一列数据根据条件拆分成两列

1.group by与聚合函数 group by一般与聚合函数一起使用。这是因为group by之后结果集就变成了多个分组,而每个分组可能包含多条记录,要想针对每个分组进行操作,所以必须使用可以作用在多条记录上的聚合函数。比如,下面的示例就使用了group by和聚合函数查询每个name的总记录数,sql语句如下: SELECT NAME,COUNT(*) FROM USER GROUP BY NAME; 要对分组后的结果进行筛选,一般使用having语句来实现,sql语句如下:

刘不怂的博客 1747

STM32CUBEMX配置SDRAM

STM32CUBEMX配置SDRAM

Master_0_的博客 2982

ADC选型实战:从参数指标到精准应用的工程指南

本文深入解析ADC(模数转换器)选型的关键参数与实战技巧,涵盖分辨率、转换误差等核心指标,并提供高精度温度测量、高速数据采集等五大应用场景的选型指南。通过实际案例和代码示例,详细讲解校准方法、功耗优化策略及常见问题排查,帮助工程师实现从参数指标到精准应用的工程实践。

weixin_29166013的博客 326

sql同一张表统计数据生成多个统计列

filter (postgresql 支持) 1.统计行数 select分组字段1,分组字段2,分组字段3, count(*)as统计所有满足条件数据行数, count(*)FILTER(WHERE条件1)AS统计满足条件1的数据行数, count(*)FILTER(WHERE条件2)AS统计满足条件2的数据行数, count(*)FILTER(WHERE条件3)AS统计满足条件3的数据行数, co...

huofuman960209的博客 1999

使用LaTex写IEEE trans 论文的参考文献(bib)

(1)在.TeX文件的最下方添加这几行内容,主要为生成tran形式的参考文献,第二行为参考文献名称,我命名为reference.bib,所以写的是reference,要根据自己的命名改写。(5)如果要在文中引用的话,就在.tex文件中添加\cite{},中括号里面内容为方框圈出来部分,但引用之后,在参考文献后面会出现[1]这样的标识,不知道为什么。(4)完成(3)以后,点击工具-命令-LaTeX,编译,然后按照此步骤LaTeX-bibtex-LaTeX-LaTeX,就可以完成参考文献的导入。

qq_45884215的博客 6259

SQL进阶学习——列转行

列转行 一、使用UNION ALL 1.原始数据:(4个季度的销售金额分为四列) 给定一个公司所有员工各个季度销售金额的表格employee_sales: 2.查询语句 问题:依据 employee_id,把四个字段的数据放到一个字段中。 思路:可以先查询出四个字段,然后用UNION ALL 组合。 SELECT employee_id,employee_name,'一季度',sales_amount_q1 from employee_sales UNION ALL SELECT .

一粒飞鸿丶的博客 577

华为OD机试真题 新系统 2026-06-10 C++ 实现【设备重排SN】

通信设备SN一般是包含:字母、数字,用'-'(破折号)进行分组分割,例如:8F-3T-1G-2n是一个有效的SN地址。 现在要对已经存在的SN 按照新的规则进行重排:

MISAYAONE的博客 132

ResNet改进(50):SKConv和CBAM增强的ResNet模型

动态调整感受野大小- 结合通道和空间注意力模型的核心思想是在ResNet的每个残差块后插入这些注意力模块,使网络能够自适应地关注更重要的特征。模型的核心是类,它在标准ResNet34的基础上:替换了初始卷积层,使用更小的核(3×3)和步长(1)在每个残差块后选择性添加SKConv和CBAM模块# 加载预训练ResNet34# 自定义初始层# 添加注意力机制的残差层通过集成SKConv和CBAM,这个改进的ResNet模型能够更有效地捕捉多尺度特征并关注关键信息区域。

2401_82355416的博客 622

mysql 两字段相乘_sql统计2列相乘和语句.doc

sql统计2列相乘和语句sql统计2列相乘和语句篇一:sql统计2列相乘和语句最近有网友提出“两数相除求余数 SQL语句怎么实现两列内容”等问题,小小知识站提取了各大知名网站有关“两数相除求余数 SQL语句怎么实现两列内容”的部分信息,请注意,文中的内容不代表本站的观点,不要相信任何联系方式。下文是关于“两数相除求余数 SQL语句怎么实现两列内容”的一些信息:问题:SQL语句怎么实现两列内容相加篇...

weixin_34706684的博客 4250

swl安装无法与服务器建立链接,如何解决?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。

**My Coding Family** 2077

同值列统计

用 sql 实现的话需要对每列嵌套查询,用 union 合并结果集成一列。当列数非常多的时候语句也要扩充。A1: 用一个 txt 文件作为源。导入 txt 文件数据,第一行作为列名。这个需求已经很简明,思路就是对数据行进行列转换,然后按值统计个数。字段名: a b c d e f。数据: 1 2 1 1 2 3。求,表 table 中数据为“1”的个数有多少?A2:将记录 1 转换成数组,按值分组计数。数据为“2”的个数有多少?数据为“3”的个数有多少?

Raqsoft 216

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

sqlserver——你真的懂你写的Sql语句么?

sql语句每一步的执行,都返回一个虚拟表。根据子句的条件,不断对返回的虚拟表进行修改,以期返回最终用户需要的结果。如无必要,不要使用order by ,这样会增加开销。

softwareCraftsman 851

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

mysql常见SQL语句

记录mysql的一些常用语法

huan的学习记录 4637

Hive split()、explode()和lateral view 应用单列,多列炸裂

导航基本概念示例数据准备函数应用split()explode()函数总结 基本概念 在对于SQL的使用中,常常会遇到列转行,或者将一列的数据散列成多行进行统计分析处理的需求,这时候,结合split()、explode()和lateral view 处理这些需求会使得我们得心应手许多。先来了解一下这三个基本的介绍吧。 1.Split(str, separator):将字符串按照后面的分隔符切割,转换成字符array。第一个参数是我们需要进行分割的字符串,第二个参数是我们的分割符,其结果时一个数组。和Java

清风的博客 5923

【SQL】⼀条 SQL 查询语句在 MySQL中如何执行

⼀条 SQL 查询语句在 MySQL中如何执行

hui_zai_的博客 469

VastBase——SQL调优

好的表定义至少需要达到以下几个目标:1、减少扫描数据数据量:通过分区的剪枝机制可以实现该点。2、尽量减少随机I/O:通过聚簇/局部聚簇可以实现该点。表定义在数据库设计阶段创建,在SQL调优过程中进行审视和修改。

数据库学习ing 1611

sql 基本语句

一、SQL速成 结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件(如表、索引、字段等)的建立和操纵。 以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册。 1.创建表 表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联。创建表的基本语法如下: creat

猫老大专栏 1405

GaussDB对慢SQL语句进行分析,通常包括以下步骤

针对EXPLAIN或EXPLAIN PERFORMANCE信息,定位SQL慢的具体原因以及改进措施,具体参见典型SQL调优点。通常情况下,有些SQL语句可以通过查询重写转换成等价的,或特定场景下等价的语句。重写后的语句比原语句更简单,且可以简化某些执行步骤达到提升性能的目的。查询重写方法在各个数据库中基本是通用的。经验总结:SQL语句改写规则介绍了几种常用的通过改写SQL进行调优的方法。

weixin_57156550的博客 444
上一篇: 访问JSP文件或者Servlet文件时提示“下载”
下一篇: JDBC相关的知识点总结
Java_Web_Book
博客等级 码龄18年 8粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值