范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

SQL经典面试题行列转换

  在我们的实际工作中,为了研发出功能完整、系统健壮的软件,需要我们测试人员想法设法的去挑出软件的问题,所以很多公司对测试人员的要求甚至高于开发人员,而通过 SQL 语句的编写,测试人员可以去进行数据查询、数据正确性完整性验证、构造测试数据、或者行破坏测试或压力测试。因此,作为一个测试人员,掌握 SQL 的重要性就不言而喻了。在我们的面试过程中,会碰到各种数据库或者编写 SQL 的面试题。面试题:行列转换
  来看下面这道难倒众生的经典面试题
  柠檬班第 30 期学生要毕业了,他们 Linux、MySQL、Java 成绩保存在数据表 tb_lemon_grade 中,表中字段 id,student_name,course,score 分别表示成绩 id,学生姓名,课程名称,课程成绩,表中数据表 1 所示。请写出一条 SQL,将表 1 的数据变成表 2 的形式
  表一数据如下:
  id
  学生姓名
  课程名称
  课程成绩
  1
  张三   Linux   85
  2
  张三   MySQL   92
  3
  张三   Java   87
  4
  李四   Linux   96
  5
  李四   MySQL   89
  6
  李四   Java   100
  7
  王五   Linux   91
  8
  王五   MySQL   83
  9
  王五   Java   98
  表 2 数据如下:   学生姓名   Linux   MySQL   Java   张三   85
  92
  87
  李四   96
  89
  100
  王五   91
  83
  98一:创建表 CREATE TABLE tb_lemon_grade ( id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, student_name VARCHAR(20) DEFAULT NULL, course VARCHAR(20) DEFAULT NULL, score FLOAT DEFAULT "0"); 二:初始化数据 INSERT INTO tb_lemon_grade (student_name, course, score) VALUES ("张三", "Linux", 85), ("张三", "MySQL", 92), ("张三", "Java", 87), ("李四", "Linux", 96), ("李四", "MySQL", 89), ("李四", "Java", 100), ("王五", "Linux", 91), ("王五", "MySQL", 83), ("王五", "Java", 98); 三:首先我们查询出所有数据,这个结果和我们的图 1 是一样的   select * from tb_lemon_grade;   四:使用常量列输出我们的目标结构   可以看到结果已经和我们的图二非常接近了   五:使用 IF 函数,替换我们的常量列,将成绩赋值到对应行的对应列 SELECT student_name, IF(COURSE = "Linux",SCORE,0) "Linux", IF(COURSE = "MySQL",SCORE,0) "MySQL", IF(COURSE = "Java",SCORE,0) "Java" FROM tb_lemon_grade;   运行 SQL,结果如下所示:   六:我们来分析这个结果集,   在原始结构中,每一行表示了某个同学某一个科的成绩,以第一行为例,第一行是张三同学 Linux 的成绩,所以我们结果集中 Linux 有成绩为 85,而其他两列 MySQL 和 Java 作为常量列,成绩为 0。   再分析每个同学的成绩的所有行,如下图所示,每个方块内包含行中,就有该同学这门课程的成绩,并且该方块内其余行的成绩值为 0。因此,不难想到,我们可以使用分组,通过分组提取出每科的成绩七:分组,使用 MAX 函数取出最大值   (因为其中只有一行成绩为真实成绩,其他行值为 0,所以最大值就是真实成绩) 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;   八:也可以分组后,对每行数据进行求和,使用 SUM 函数,语句和结果如下: SELECT student_name, SUM(IF(COURSE = "Linux",SCORE,0)) "Linux", SUM(IF(COURSE = "MySQL",SCORE,0)) "MySQL", SUM(IF(COURSE = "Java",SCORE,0)) "Java" FROM tb_lemon_grade GROUP BY student_name;   九:既然使用 IF 语句可以达到效果,那使用 CASE 语句也是同样的效果   分组,使用 MAX 聚合函数 SELECT student_name, max(CASE COURSE when "Linux" THEN SCORE ELSE 0 END) as "Linux", max(CASE COURSE when "MySQL" THEN SCORE ELSE 0 END) as "MySQL", max(CASE COURSE when "Java" THEN SCORE ELSE 0 END) as "Java" FROM tb_lemon_grade GROUP BY student_name;   结果如下图所示:   使用 SUM,结果如下图所示 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;   总结   通过上面一步一步的分解,我们就完成了一个行转列的 SQL 语句编写,现在问题又来了,这种方式虽然能达到效果,但是如果课程多了,   比如还有英语、数学、物理等等课程,是不是写起来就笔记麻烦了?有没有动态的方式,不管有多少课程,通过 SQL 就能一步到位呢?感兴趣大家可以去尝试下。   p s:小编个人收集啦许多软测资料,希望能够帮到学软件测试的朋友们软件资料分享包括但不限于:Java自动化测试、Python自动化测试、性能测试、web测试、APP测试 测试开发工具包:appuim安装包、fiddler安装包(也有配套视频教程)、eclipse、git、jmeter、loadrunner、monkey、postman、soapul、Xmind等等   有需要的朋友可以私信小编"测试"领取

北京冬奥会中国能取得什么成绩?挪威在冬奥会上为什么这么厉害?自北京冬奥会开赛以来,已经过去10天了,中国选手已经取得5金3银2铜的成绩。现截止2月14号晚10点的奖牌数这次冬奥会将产生109枚金牌,已产生69枚。留给中国队的时间不多了。金牌北京冬奥会丨自己动手,丰墩足墩,中国网友实现冰墩墩自由的新路子今冬顶流是什么?当然是我宝冰墩墩为了实现墩自由广大中国网友开始大显身手了!Letstakealook!(让我们瞧一瞧呗!)一号种子选手,皮影冰墩墩之皮墩墩(图片来源北京龙在天皮影剧欢迎!中超大牌球星确认正式签约我准备好在中国接受挑战根据巴西媒体环球体育的报道,巴西著名后卫前拉齐奥队主力华莱士,已经与武汉三镇正式签约。在接受采访时,华莱士也确认自己已经完成了转会,并且表示他已经准备好在中国接受挑战。华莱士透露,谷爱凌坡面障碍逆袭夺银!中国冬奥代表团追平奖牌数历史最佳在刚刚结束的自由式滑雪女子坡面障碍技巧决赛中,尽管前两轮未能发挥出最佳状态,但青蛙公主谷爱凌凭借最后一轮的精彩表现绝地反击,夺得一枚银牌。而这枚奖牌也让中国代表团在本届冬奥会上的奖三棵树助力首钢大跳台景观冷却塔冬奥会徽涂刷慧正资讯2月8日,谷爱凌在收获北京冬奥会自由式滑雪女子大跳台金牌后表示,这次她是回到了家乡比赛,十分亲切。她非常喜欢脚下的这个场地,而且不只是她,所有运动员都告诉她,首钢大跳台是自球迷愤怒滔天要求严惩中国国足队长吴曦丢人,越南媒体都看不下去吴曦作为国家队队长,没有起到一点带头作用,带的都是坏头!怕受伤躲开越南的传球导致越南进球,和女足王霜带伤出战,还要被主教练训,更并提唐佳丽用身体挡出韩国必进的射门。没有对比没有伤害瑞士草蜢官方公告贾博琰加盟球队北京时间2月16日,瑞士草蜢俱乐部宣布贾博琰加盟球队,他将被租借至克罗地亚乙级联赛俱乐部杜布拉瓦。官方公告中国球员贾博琰从中超上海海港足球俱乐部转会加盟瑞士草蜢足球俱乐部。与此同时春季,这5种叶酸含量高的蔬菜,记得给孩子多吃,助力成长人间烟火,最抚人心,便是那简单的一日三餐大家好,我是晓苹,每天分享生活中美食,让爱走进厨房,让家充满爱。春季,这5种叶酸含量高的蔬菜,记得给孩子多吃,助力成长。时间如流水,春天来了詹姆斯崩,詹姆斯崩完戴维斯崩,戴维斯崩完了球队崩,崩崩更健康洛杉矶湖人最近一段时间的表现非常糟糕,其中安东尼戴维斯(AnthonyDavis)的发挥同样令人担忧。洛杉矶湖人在对阵金州勇士的比赛中遗憾输球,因此已经遭遇三连败,同时西部排名继续国足丢人丢到太空!指令长翟志刚也是球迷春节期间追了12强赛根据天宫TV的官方报道,仍在天空执行任务的神舟十三号乘组,在春节期间,指令长翟志刚也关注了中国男足的12强赛。从官方给出的画面来看,翟志刚一人独自观看国足,王亚平和叶光富并没有一起CBA快讯第三阶段赛区确定,汤杰加盟广东,张春军或投奔恩师第三阶段已经确定3月1日开始比赛,目前各支球队都在积极的备战之中。本赛季常规赛场次减少到了38场,因此比赛比上赛季会少很多,其实还是比赛多的时候更加好看,年轻人也能够得到更多的出场
归脾丸配一物,不仅补脾益气,还可治这四种病,建议收藏很多人在平时都会出现失眠多梦面色萎黄食欲不振疲倦乏力的现象,但是你知道吗?身体出现这些现象,通常与我们的脾有着很大的关系。中医上讲,我们的脾主运化,为气血运化之源,脾主运化的功能可戒烟,什么时候都不晚许多研究发现,吸烟与癌症有很大关系,吸烟是世界各国公认的癌症小助手,吸烟与多种癌症的发生有关,口腔癌鼻咽癌喉癌食道癌支气管癌气管癌胃癌结直肠癌肝癌胰腺癌肺癌肾癌肾盂癌输尿管癌膀胱癌今年马丁靴不时兴了,这3款膝下靴才是真时髦,高级显腿长马丁靴真的算是时尚圈的老网红了,从春天穿到冬天,真的太百搭了,但今年马丁靴不时兴了,另外一种鞋子横空出世,时髦洋气,高级显腿长,瞬间抓住大家爱美的心,那就是膝下靴!膝下靴听名字就一5年过敏性鼻炎真实有效方法经验总结我家孩子6岁,从小就遗传爸爸鼻炎,加上孩子又是过敏体质,过敏性鼻炎,过敏性结膜炎,过敏性哮喘,腺样体肥大,晚上睡觉打呼噜,全找到他了一到季节交替孩子过敏性鼻炎就复发,眼睛痒,揉眼,健康养生长期熬夜怎么破?8大方法拯救你一般来说,皮肤在晚10时到11时进入晚间保养状态。如果长时间熬夜,人的内分泌和神经系统的正常循环就会失调,皮肤会受损,出现头痛黑眼圈眼袋视力下降等问题。有时候熬夜无可避免,那就不妨奈顿正在积极推进收购曼联事宜,人们已对格雷泽家族感到厌倦直播吧9月19日讯据每日邮报报道,迈克尔奈顿表示目前对于曼联的收购正在向前推进当中。奈顿在1989年曾尝试收购曼联,但最终以失败告终,后来他成为了曼联董事会的成员。上个月有消息称,25人夺0金,国乒爆冷输球尝败绩,5项全线出局仅获一枚银牌众所周知,最近国乒除了一部分的主力在国内备战成都世乒赛,另外一部分派出很多的年轻球员,到国外征战常规挑战赛。这一部分年轻球员出国征战的目的只有一个,就是提升大家的经验,尤其面对国外凯尔拜仁的表现让我们不敢相信,但也让我们高兴多特蒙德体育总监凯尔日前在接受采访的时候谈到了老对手拜仁慕尼黑等话题。关于拜仁慕尼黑在上轮德甲联赛中01不敌奥格斯堡,凯尔说道我们感到有点惊讶,因为我们不敢相信。不过当然了,我们很恭喜!湖人公布4名试训名单,斯玛特再次表态,73前锋辅佐唐斯北京时间9月19日,NBA自由市场正在进行,其中安德森表示,科比布莱恩特的最后一战真的不可思议,从小就是科比的死忠,埃尔南戈麦斯透露,会好好享受决赛,我们将为金牌而战。就在刚刚,联与华为合作卖保温杯,哈尔斯上半年净赚1亿,吕强自曝订单将放缓出品子弹财观9月19日消息,最近浙江哈尔斯真空器皿股份有限公司举办了投资者关系活动,公司董事长吕强携总裁吴子富首席财务官吴汝来以及董秘邵巧蓉一起接待了14家调研机构的人员。在有关业华为FreeBudsSE无线耳机今日开启预售,到手价339元IT之家9月20日消息,今年7月底华为发布了FreeBudsSE无线耳机,这款耳机今日1008在华为商城开启预售,30元订金抵60元,到手价339元,主打纯净音质24小时音乐播放舒