MySQL数据库如何进行表数据行列转换,指定格式汇总?
2019-08-05 22:28
253 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LINHONG_1994/article/details/98527691
应用场景:现在有一张数据表data_table,包含了id(编号)、name(姓名)、subject(学科)、score(分数),每个学员有三门学科 Java基础 、 数据库 、linux运维 ,并且有相应的分数,如下面的测试表数据,现在要转化成目标表的数据格式,用sql怎么实现?
测试表数据
mysql> select * from data_table; +----+--------+-----------+-------+ | id | name | subject | score | +----+--------+-----------+-------+ | 1 | 林大侠 | Java基础 | 99 | | 2 | 林大侠 | 数据库 | 88 | | 3 | 林大侠 | linux运维 | 77 | | 4 | 李大象 | Java基础 | 89 | | 5 | 李大象 | 数据库 | 69 | | 6 | 李大象 | linux运维 | 87 | | 7 | 周汪汪 | Java基础 | 96 | | 8 | 周汪汪 | 数据库 | 85 | | 9 | 周汪汪 | linux运维 | 59 | +----+--------+-----------+-------+ 9 rows in set (0.00 sec)
目标表数据
+--------+----------+--------+-----------+------+ | 姓名 | Java基础 | 数据库 | linux运维 | 总分 | +--------+----------+--------+-----------+------+ | 周汪汪 | 96 | 85 | 59 | 240 | | 李大象 | 89 | 69 | 87 | 245 | | 林大侠 | 99 | 88 | 77 | 264 | | 合计 | 284 | 242 | 223 | 749 | +--------+----------+--------+-----------+------+ 4 rows in set (0.00 sec)
正确答案
SELECT IFNULL(`name`,'合计') AS '姓名', SUM(CASE WHEN SUBJECT ='Java基础' THEN score END) AS 'Java基础', SUM(CASE WHEN SUBJECT ='数据库' THEN score END) AS '数据库', SUM(CASE WHEN SUBJECT ='linux运维' THEN score END) AS 'linux运维', SUM(score) AS '总分' FROM data_table GROUP BY `name` WITH ROLLUP;
答案分析
首先看目标表数据,我们知道表属性包括姓名、Java基础、数据库、linux运维、总分五个字段,那么我的sql语句在select时应该包括五个字段,其中总分项在进行分组后sum求和就行!本sql实现的重点在于分别对学科(Java基础、数据库、linux运维)总计,这时我们就要用with rollup修饰符进行统计额外的汇总信息,当统计完了之后,姓名列的最后一个是NULL,怎么办了?所以我们还得应用了IFNULL()进行判断,不为NULL则查询出存在的姓名,为NULL则手动命名为“合计”,这样的符合目标表数据的查询结果。这个应用在面试中也是高频出现的sql题型,需要的手写sql能力和sql的基础功能。
☛推荐阅读
•MySQL数据库中group by子句修改程序#应用with rollup修饰符解决
•MySQL数据库流程控制(单行)函数#if、ifnull、case等函数总结
#轻松一刻
☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!
☞本人博客:https://coding0110lin.blog.csdn.net/ 欢迎转载,一起技术交流吧!
相关文章推荐
- MySQL数据库按指定格式导出数据进行备份(select into outfile)和恢复数据的方法
- 在ENVI进行的土地利用分类数据,需要做景观指数分析,如何将其转换成GRID格式呀
- 如何读取并对nii三维数据进行切片处理、转换格式保存
- 将CAD图纸转换成PNG格式应该如何进行操作?
- JavaScript不同类型数据之间的运算如何进行转换
- 如何将gml格式的网络数据转换为可处理的格式
- mysql数据库如何导入dbf格式数据
- 利用GsonFormat+FastJson对复杂json数据格式进行转换
- C#如何利用结构体对固定格式数据进行解析
- C#常用的数据格式转换汇总
- 如何使用java代码进行视频格式的转换(FLV)
- 如何将数据从DATASET写入XML文档,并转换成其他应用系统所需的格式!(如RSS阅读器XML文档格式)
- 如何在C#中进行音频格式转换
- abap如何进行各种码制数据之间转换
- 如何进行各种码制数据之间转换
- ABAP--如何进行sap的金额数据存储和显示之间的转换(CURRENCY_AMOUNT_DISPLAY_TO_SAP)
- 如何将C#/.NET 将json字符串格式数据转换成对象
- 如何转换音频数据格式1
- 以HttpGet方法获取URL数据并转换成指定编码格式的字符串
- 如何对MySQL数据库中的数据进行实时同步