美文网首页
【数据库】SQL经典面试题 - 行列转换二 - 列转行

【数据库】SQL经典面试题 - 行列转换二 - 列转行

作者: 柠檬班软件测试 | 来源:发表于2017-08-24 09:32 被阅读0次

本帖子是行转列的一个逆向操作——列转行,看下面一个面试题

面试题2: 柠檬班第30期学生要毕业了,他们的Linux、MySQL、Java成绩数据表 tb_lemon_grade_column中, 表中字段student_name,Linux,MySQL,Java分别表示学生姓名、Linux成绩、MySQL成绩、Java成绩, 数据图1所示。请写出一条SQL,将图1的数据变成图2的形式(列转行)

请点击此处输入图片描述

下图示:

1:使用上节课学的知识,获得以列的形式展示的成绩数据(行转列)

SELECT student_name,SUM(CASE COURSE when 'Linux' THEN SCORE ELSE 0 END) as

'Linux',SUM(CASE COURSE when 'MySQL' THEN SCORE ELSE 0 END) as 'MySQL',SUM(CASE

COURSE when 'Java' THEN SCORE ELSE 0 END) as 'Java'FROM tb_lemon_grade

结果如下:

请点击此处输入图片描述

2:使用导出功能,将数据导入到Excel

请点击此处输入图片描述

点击下一步,选择保存位置,输入保存的文件名

请点击此处输入图片描述

点击下一步,点击开始,讲数据导入到本地

3:使用导入功能,将导出的Excel表导入到数据库

选择表,点击右键选择导入向导

请点击此处输入图片描述

选择Excel文件,点击下一步,选择刚才保存的Excel文件,输入要保存的表,进行导入

请点击此处输入图片描述

4:导入完成,就生成了一个表,查看下数据

请点击此处输入图片描述

5:上面是使用导入本地文件的方式新建了一个表,并且把文件的数据也导入进来了,

如果是数据本身已经存在数据库中,我们还有更简单的方法,使用的是创建表的CREATE TABLE语法,可以新建表,并且把结果集的数据也会初始化到新建表中,如下所示:

CREATE TABLE new_tables(SELECT student_name,MAX(IF(COURSE = 'Linux',SCORE,0)) 'Linux',MAX(IF(COURSE = 'MySQL',SCORE,0)) 'MySQL',MAX(IF(COURSE = 'Java',SCORE,0)) 'Java'FROM tb_lemon_grade

6:怎么列传行呢?使用UNION ALL,然后行转列

SELECT student_name,'linux' course,linux score FROM tb_lemon_student2

7:我们想排下序怎么办呢? 采用子查询的方式(注意子查询中的别名a,一定要写上别名)

SELECT student_name,'linux' course,linux score from tb_lemon_student2

结果如下:

请点击此处输入图片描述

今天就分享到这里了。如果大家觉得还不错,就点个赞吧!!!!

相关文章

  • 【数据库】SQL经典面试题 - 行列转换二 - 列转行

    ​本帖子是行转列的一个逆向操作——列转行,看下面一个面试题 面试题2: 柠檬班第30期学生要毕业了,他们的Linu...

  • SQL行转列,列转行

    SQL 行转列,列转行 行列转换在做报表分析时还是经常会遇到的,今天就说一下如何实现行列转换吧。 行列转换就是如下...

  • ORACLE 行列转函数

    Oracle11g提供了新的行列转换操作:PIVOT(行转列)和UNPIVOT列转行。老版本使用decode来进行...

  • SQL 行列转换

    前段时间有人问了一个问题,就是SQL的行列转换,当时有点懵没答上来,后来细细想一想,其实最近的一个项目就已经用到了...

  • SQL行列转换

    行转列1.1、case when1.2、内置函数pivot 列转行2.1、unpivot2.2、union实现

  • Sql 列转行

    实现效果 原始数据 转换后数据 示例代码

  • python数据分析10:数据转换

    数据转换:一般包括一列数据转换为多列数据,行列转换,DataFrame转换为字典、列表和元组等 【一列数据转换为多...

  • SQL行转列-列转行

    SQL行转列-列转行 一、行转列 建表语句 插入数据 查询数据表中的内容(即转换前的结果) 先来看一下转换后的结果...

  • SQL SERVER行列转换

    行列转换要用到SQL SERVERCASE [字段名] WHEN ‘字段名’ THEN [字段的数据值] ELSE...

  • DLA SQL技巧:行、列转换和JSON数据列展开

    1. 简介 在数据库SQL处理中,常常有行转列(Pivot)和列转行(Unpivot)的数据处理需求。本文以示例说...

网友评论

      本文标题:【数据库】SQL经典面试题 - 行列转换二 - 列转行

      本文链接:https://www.haomeiwen.com/subject/ceusdxtx.html