CREATE TABLE students(

id INT PRIMARY KEY,

NAME VARCHAR(11)

);

CREATE TABLE courses(

id INT PRIMARY KEY,

NAME VARCHAR(11)

);

CREATE TABLE scores(

sid INT,

cid INT,

score INT,

RIMARY KEY (sid,cid)

);

3表关联查询:

SELECT st.id,st.name,c.NAME course,sc.score FROM students st

LEFT JOIN scores sc ON st.id=sc.sid

LEFT JOIN courses c ON sc.cid=c.id

将课程分类转为列名,其列值为分数:

SELECT t.id,t.name,

CASE course WHEN '语文' THEN score ELSE 0 END a,

CASE course WHEN '数学' THEN score ELSE 0 END b,

CASE course WHEN '英语' THEN score ELSE 0 END c,

CASE course WHEN '历史' THEN score ELSE 0 END d

FROM

(SELECT st.id,st.name,c.NAME course,sc.score FROM students st

LEFT JOIN scores sc ON st.id=sc.sid

LEFT JOIN courses c ON sc.cid=c.id) t

对上表按人员id分组,并将分完组的个列分数相加,组合到一行中,并对行求和:

SELECT t2.id,t2.name,SUM(a) '语文',SUM(b) '数学',SUM(c) '英语',SUM(d) '历史',SUM(a+b+c+d) '总分' FROM

(

SELECT t.id,t.name,

CASE course WHEN '语文' THEN score ELSE 0 END a,

CASE course WHEN '数学' THEN score ELSE 0 END b,

CASE course WHEN '英语' THEN score ELSE 0 END c,

CASE course WHEN '历史' THEN score ELSE 0 END d

FROM

(SELECT st.id,st.name,c.NAME course,sc.score FROM students st

LEFT JOIN scores sc ON st.id=sc.sid

LEFT JOIN courses c ON sc.cid=c.id) t

) t2

GROUP BY t2.id;

mysql分组求和_mysql 行转列,对列的分组求和,对行求和相关推荐

  1. mysql 虚拟字段_Mysql 5.7 的‘虚拟列’是做什么?

    Mysql 5.7 中推出了一个非常实用的功能 虚拟列Generated (Virtual) Columns 对于它的用途,我们通过一个场景来说明 假设有一个表,其中包含一个 date 类型的列 `S ...

  2. mysql 数据相加_mysql,php_mysql查询将两列数值相加问题,mysql,php,sql - phpStudy

    mysql查询将两列数值相加问题 如图所示: 我希望加一个total_price列,值为price+price2的和,这个应该怎么写SQL: select * from ims_goods_1 whe ...

  3. mysql调换数据_mysql互换表中两列数据方法

    1.创建表及记录用于测试 CREATE TABLE product ( id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '产品id', name ...

  4. mysql行转列和列转行_mysql 行转列和列转行实例详解

    mysql行转列.列转行 语句不难,不做多余解释了,看语句时,从内往外一句一句剖析 行转列 有如图所示的表,现在希望查询的结果将行转成列 建表语句如下: create table `test_tb_g ...

  5. mysql行转列和列转行_Mysql中行转列和列转行

    一.行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容. 建表语句 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id IN ...

  6. mysql 分组 列转行,mysql列转行以及年月分组_MySQL

    bitsCN.com mysql列转行以及年月分组 Java代码 SELECT count(DISTINCT(a.rect_id)) zcount, a.job_dept, DATE_FORMAT(s ...

  7. mysql分组排列的查询语句_数据的排序与分组语句_MySQL

    bitsCN.com 数据的排序与分组语句 使用SQL语句执行查询操作时,我们可能发现查询出的数据结果的排序是无序的.为了更好的观察数据表中的查询结果,开发人员或者用户经常要对查询的数据进行排序操作, ...

  8. mysql聚合函数要分组吗_mysql聚合函数和分组-阿里云开发者社区

    文章实例的数据表,来自上一篇博客<mysql简单查询>:http://blog.csdn.net/zuiwuyuan/article/details/39349611 一. 聚合函数 聚合 ...

  9. mysql 行转列查询优化_行转列及列转行查询

    开发过程中常遇到行转列或是列转行的问题,即需要将数据库中一张表信息进行行转列操作,再将每列(即每个字段)作为与其他表进行联表查询的字段进行显示. 一.行转列:将原来同一列下多行的不同内容作为多个字段, ...

  10. mysql 分桶_mysql的分组和过滤桶where的组合运用

    理解分组,可以这样:对GROUP BY子句后面跟随的列名进行分组,然后对每一个分组而不是整个表进行操作. 举例:在产品表中,检索每一个供应商提供的商品的数量. mysql> SELECT ven ...

最新文章

  1. 学java培训开发需要多少钱
  2. BED文件如何排序,sort按列排序
  3. [ Nowcoder Contest 165 #D ] 合法括号序列
  4. 2022-03-31 一些后续
  5. Android NDK 内存泄露检测
  6. 爬虫python漏洞群_如何用爬虫获取cnvd漏洞库?
  7. 2021牛客第一场H.Hash Function—FFT求差值的卷
  8. mysql 求bit 某位为1_mysql按位的索引判断值是否为1
  9. 骑行GPS导航套件:多普达D600+夏新GPS-166+灵图天行者9配合,伴我骑行千里
  10. 在CF卡上实现EWF功能
  11. java计算机毕业设计疫情防控期间网上教学管理源程序+mysql+系统+lw文档+远程调试
  12. 计算机单位厘米 像素,像素厘米转换器
  13. 【.7z 格式文件的压缩、解压】
  14. ReactNative仿支付宝付款密码输入框
  15. C语言 输入一个不大于五位的数字,先判断是几位数字,然后将其数字顺序输出和逆序输出
  16. 文本转语音-微软Azure-一步一步教你从注册到使用
  17. 从面试官的视角来提升面试者的必须具备的IT技能
  18. vue-shop 表格中使用树形控件 vue-table-width-tree-grid
  19. 男子与 AI 对话 6 周后,选择自杀!一时难分“魔鬼”还是“救星”?
  20. 集群搭建系列(八)Kafka

热门文章

  1. 弹性板计算和板带划分计算_彻底搞懂板带的配筋及范围
  2. 基础级拆机-神舟战神GX8CP5s1上8700发现较为鸡肋-仿CP7s2
  3. PLSQL 教程 简单上手教程
  4. 利用Linux socket 模拟大华IPC发送广播包,让大华客户端搜索到一个模拟的ip摄像头
  5. 【chrome】谷歌chrome浏览器离线安装包的获取及使用技巧
  6. CMPP3.0状态报告状态码
  7. 机器人(RPA路程自动化)RPA流程自动化和AI的区别。
  8. java spring定时器_Spring定时器的使用
  9. python安装osgeo库_python第三方库安装
  10. 西北大学计算机课表,西北大学课表