【数据库】SQL经典面试题 - 行列转换二 - 列转行
本帖子是行转列的一个逆向操作——列转行,看下面一个面试题
面试题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
GROUP BY student_name;
结果如下:

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
GROUP BY student_name);
6:怎么列传行呢?使用UNION ALL,然后行转列
SELECT student_name,'linux' course,linux score FROM tb_lemon_student2
UNION ALL
SELECT student_name,'MySQL' course,MySQL score FROM tb_lemon_student2
UNION ALL
SELECT student_name,'Java' course,Java score FROM tb_lemon_student2;
7:我们想排下序怎么办呢? 采用子查询的方式(注意子查询中的别名a,一定要写上别名)
SELECT student_name,'linux' course,linux score from tb_lemon_student2
SELECT * FROM (UNION ALL
SELECT student_name,'MySQL' course,MySQL score from tb_lemon_student2
UNION ALL
SELECT student_name,'Java' course,Java score from tb_lemon_student2) a ORDER BY student_name DESC;
结果如下:

今天就分享到这里了。
【数据库】SQL经典面试题 - 行列转换二 - 列转行的更多相关文章
- [数据库] SQL查询语句表行列转换及一行数据转换成两列
原文来自:http://blog.csdn.net/Eastmount/article/details/50559008 本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两 ...
- 数据库MySQL经典面试题之SQL语句
数据库MySQL经典面试题之SQL语句 1.需要数据库表1.学生表Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学 ...
- 最强最全面的大数据SQL经典面试题(由31位大佬共同协作完成)
本套SQL题的答案是由许多小伙伴共同贡献的,1+1的力量是远远大于2的,有不少题目都采用了非常巧妙的解法,也有不少题目有多种解法.本套大数据SQL题不仅题目丰富多样,答案更是精彩绝伦! 注:以下参考答 ...
- SQL pivot 基本用法 行列转换 数据透视
SQL通过pivot进行行列转换 数据透视 可直接在sql server 运行 传统操作 和 pivot create table XKCl (name nchar(10) not null, 学科 ...
- SQL + Python 面试题:之二(难度:中等)
SQL + Python 面试题:之二(难度:中等)
- SQL经典面试题及答案
1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2 ...
- SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY)
SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5 ...
- 关于面试总结-SQL经典面试题
关于面试总结6-SQL经典面试题 前言 用一条SQL 语句查询xuesheng表每门课都大于80 分的学生姓名,这个是面试考sql的一个非常经典的面试题 having和not in 查询 xueshe ...
- SQL SERVER 中的行列转换小结
1. 介绍说明 前段时间组内的小伙伴在升级维护项目中,经常涉及一些复杂的数据转换问题,让我去看下有些地方怎么处理,我发现好多都是涉及到行列转换的问题,处理起来经常会比较麻烦,借此也总结一下,方便以后的 ...
随机推荐
- 【HDU4336】Card Collector(Min-Max容斥)
[HDU4336]Card Collector(Min-Max容斥) 题面 Vjudge 题解 原来似乎写过一种状压的做法,然后空间复杂度很不优秀. 今天来补一种神奇的方法. 给定集合\(S\),设\ ...
- 【bzoj3598】 Scoi2014—方伯伯的商场之旅
http://www.lydsy.com/JudgeOnline/problem.php?id=3598 (题目链接) 题意 Solution 原来这就是极水的数位dp,呵呵= =,感觉白学了.htt ...
- 解题: SDOI 2011 染色
题面 强行把序列问题通过树剖套在树上...算了算是回顾了一下树剖的思想=.= 每次树上跳的时候注意跳的同时维护当前拼出来的左右两条链的靠上的端点,然后拼起来的时候讨论一下拼接点,最后一下左右两边的端点 ...
- HDU 1711 Number Sequence (字符串匹配,KMP算法)
HDU 1711 Number Sequence (字符串匹配,KMP算法) Description Given two sequences of numbers : a1, a2, ...... , ...
- Redis学习基础一
今天开始系统的学习redis基础知识,以往只是看redis的手册,貌似总是记不住.这次尝试手记笔记,使得印象更加深刻,从零开始学习.看是很慢,其实很快哟. 一.什么是Redis 至于什么是redis, ...
- ACM比赛_注意
ACM比赛_注意: 比赛前: 1.前一天早一点睡觉 2.避免参加激烈的活动,以免比赛时精力不足; 3.少喝水,并提前上厕所; 4.把账号,密码都准备好,放在txt中 5.提前创建多个程序(etc.10 ...
- c++设计模式之抽象工厂模式
抽象工厂思想理解:可能有若干个你想生产的产品类,建立个工厂负责分别生产各类产品,由外部客户来选取想要那种产品类,此程序中没有delete,如想delete可在工厂类中的析构函数中实现(若有错请纠正)# ...
- 【Asp.net入门04】第一个ASP.NET 应用程序-如何添加Web窗体到网站中
添加Web窗体 本部分内容: 什么是web form 怎样添加web form 1.添加Web窗体到项目中 Web 窗体是一项 ASP.NET 功能,您可以使用它为 Web 应用程序创建用户界面.We ...
- Hadoop生态圈-hive优化手段-作业和查询优化
Hadoop生态圈-hive优化手段-作业和查询优化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例)
Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编辑配置文件(pml.xml)(我 ...