面试-Sql专题-3-行转列案例汇总

行列转换.sql(包括行列转换实例) 行列转换实例 表ttt有三个字段 seq --序列 jcxm --检查项目 zhi --值 数据分别如下: seq   jcxm   zhi ------- -------- -------- 11     1    0.50 11     2    0.21 11     3    0.25 12     1    0.24 12     2    0.30 12     3    0.22 实现功能 创建视图时移动行值为列值 create view v_view1 as select seq, sum(decode(jcxm,1, zhi)) 检测项目1, sum(decode(jcxm,2, zhi)) 检测项目2, ............................. 立即下载

行转列,笔试中经常出现,主要就是case简单函数和case搜索函数的使用,下面给大家几个案例

#案例1
##数据

CREATE TABLE `t_score` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `course` varchar(20) DEFAULT NULL,
  `score` float DEFAULT '0',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

insert into t_score(name, course, score)  values
("张三", "数学", 34),
("张三", "语文", 58),
("张三", "英语", 58),
("李四", "数学", 45),
("李四", "语文", 87),
("李四", "英语", 45),
("王五", "数学", 76),
("王五", "语文", 34),
("王五", "英语", 89);

##数据效果
在这里插入图片描述

###1. 行转列SQL 语法一:简单case函数
需要效果
在这里插入图片描述

sql语句

SELECT name 姓名,
    MAX(CASE course WHEN '数学' THEN score ELSE 0 END ) 数学,
    MAX(CASE course WHEN '语文' THEN score ELSE 0 END ) 语文,
    MAX(CASE course WHEN '英语' THEN score ELSE 0 END ) 英语
FROM t_score
GROUP BY name;

###2. 行转列SQL 语法二:case搜索函数,这种语法后面可以带复杂逻辑,推荐使用

这个案例,还看不出case 搜索函数更强大的地方,只能看到另外一种写法

需要效果

在这里插入图片描述

sql语句

SELECT name 姓名,
    MAX(CASE  WHEN course='数学' THEN score ELSE 0 END ) 数学,
    MAX(CASE  WHEN course='语文' THEN score ELSE 0 END ) 语文,
    MAX(CASE  WHEN course='英语' THEN score ELSE 0 END ) 英语
FROM t_score
GROUP BY name;

###3. 带总分和平均分
需要效果
在这里插入图片描述

sql语句

select name 姓名,
sum(case when course='语文' then score else 0 end )as 语文,
sum(case when course='数学' then score else 0 end )as 数学,
sum(case when course='英语' then score else 0 end )as 英语,
SUM(score)总分,ROUND(avg(score)) 平均分 from t_score
group by name order by 总分;

###4. case when 带between and 函数
课程 不及格(0-59)个 良(60-80)个 优(81-100)个
需要效果
在这里插入图片描述

sql语句

	 select course 科目,
	 sum(case when score between 0 and 59 then 1 else 0 end) as 不及格,
	 sum(case when score between 60 and 80 then 1 else 0 end) as 良,
	 sum(case when score between 81 and 100 then 1 else 0 end) as 优秀 
	 from t_score
	 group by course;

案例2

##数据准备

CREATE TABLE `t_ke` (
  `id` int(10) NOT NULL AUTO_INCREMENT comment '',
  `teacherno` varchar(20) DEFAULT NULL comment '教室号',
  `weekno` varchar(20) DEFAULT NULL comment '星期号',
  `hasscore` varchar(10) DEFAULT '0' comment '是否有课',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

INSERT INTO `mianshi_5`.`t_ke` (`id`, `teacherno`, `weekno`, `hasscore`) VALUES (NULL, '1', '2', '有');
INSERT INTO `mianshi_5`.`t_ke` (`id`, `teacherno`, `weekno`, `hasscore`) VALUES (NULL, '1', '3', '有');
INSERT INTO `mianshi_5`.`t_ke` (`id`, `teacherno`, `weekno`, `hasscore`) VALUES (NULL, '2', '1', '有');
INSERT INTO `mianshi_5`.`t_ke` (`id`, `teacherno`, `weekno`, `hasscore`) VALUES (NULL, '3', '2', '有');
INSERT INTO `mianshi_5`.`t_ke` (`id`, `teacherno`, `weekno`, `hasscore`) VALUES (NULL, '1', '2', '有');
INSERT INTO `mianshi_5`.`t_ke` (`id`, `teacherno`, `weekno`, `hasscore`) VALUES (NULL, '2', '2', '无');

select * from t_ke;

##数据查看
在这里插入图片描述

###1. 一句sql,得到如下结果
需要效果
在这里插入图片描述

在这里插入图片描述

sql语句

SELECT teacherno 教师号 ,
    SUM(CASE  WHEN weekno='1' and hasscore='有' THEN 1 ELSE NULL END ) 星期一,
    SUM(CASE  WHEN weekno='2' and hasscore='有' THEN 1 ELSE NULL END ) 星期二,
    SUM(CASE  WHEN weekno='3' and hasscore='有' THEN 1 ELSE NULL END ) 星期三
FROM t_ke
GROUP BY teacherno; 

#案例3(了解)
##数据准备

DROP TABLE IF EXISTS `TabName`;
CREATE TABLE `TabName` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(20) DEFAULT NULL,
  `Date` date DEFAULT NULL,
  `Scount` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
 

INSERT INTO `TabName` VALUES ('1', '小说', '2013-09-01', '10000');
INSERT INTO `TabName` VALUES ('2', '微信', '2013-09-01', '20000');
INSERT INTO `TabName` VALUES ('3', '小说', '2013-09-02', '30000');
INSERT INTO `TabName` VALUES ('4', '微信', '2013-09-02', '35000');
INSERT INTO `TabName` VALUES ('5', '小说', '2013-09-03', '31000');
INSERT INTO `TabName` VALUES ('6', '微信', '2013-09-03', '36000');
INSERT INTO `TabName` VALUES ('7', '小说', '2013-09-04', '35000');
INSERT INTO `TabName` VALUES ('8', '微信', '2013-09-04', '38000');



SELECT  * from TabName ;

##数据查看
在这里插入图片描述

###1. group_concat的使用-1
效果
在这里插入图片描述

SELECT
	Date,
	group_concat(NAME, '总量:', Scount) AS b_str
FROM
	TabName
GROUP BY
	Date;

###2. group_concat的使用-2
效果
在这里插入图片描述

SELECT
	Date,
	NAME,
	group_concat(NAME, '总量:', Scount) AS b_str
FROM
	TabName
GROUP BY
	Date,
	NAME
将Matlab程序打包成.exe独立可执行程序 将Matlab程序打包成.exe独立可执行程序,在未安装Matlab的电脑上也能运行Matlab程序。 阅读详情

相关推荐

别再手动调参了!用BERTopic分析500篇论文摘要,我总结了这份超全参数调优指南

本文详细介绍了如何通过BERTopic参数调优从500篇论文摘要中挖掘高质量主题。从文档嵌入、降维到聚类,每个环节的关键参数设置都直接影响主题分析效果。文章提供了学术文本特有的调优技巧,包括预处理、主题多样性与专注度的平衡,以及评估指标与迭代优化方法,帮助研究者高效完成NLP主题分析任务。

weixin_31235909的博客 216

SQL 实现动态拼接数据-行转列

行转列

qq_41467389的博客 770

Zemax 中的 LED 阵列模型

这些光线是所有光线的子集,用于布局可视化,而不是详细分析。X 和 Y 散度(αx 和 αy)以度为单位,以不同的方式设置为 6 度和 12 度。每个 LED 都以朗伯模式(广角分布)发光,尽管有些 LED 具有内置光学元件,用于更窄或更聚焦的光束。,具体取决于这些类别中使用的半导体材料。LED 阵列由多个发光二极管 (LED) 组成,这些二极管以特定模式或配置排列,以实现均匀照明、更高强度或特定照明特性。如果数据的存在更改为“辐射强度”,则它以弧度为单位显示每个立体角的功率,作为探测器上入射角的函数。

jkh920184196的博客 1596

sql列转行 行转列

在 SQL 中,转换数据以按列排列的值成为按行排列的值(即所谓的“列转行”或“列转行”)是常见的数据操作需求。这个操作在不同的数据库管理系统中可以通过不同的技术手段来实现。在 SQL 中,行转列(也称为“透视”或“旋转”)的操作是将行数据转换为列数据,这在数据总结和分析中非常有用。不同的数据库系统有不同的方法来实现行转列的操作。操作的数据库,如 Oracle 和 SQL Server,可以直接使用。将多个列的数据合并到一个新的结果集的单一列中。如果你的列数是固定的,可以使用。函数可以实现类似的操作。

weixin_48485132的博客 1万+

基因的富集分析

通过RNA_seq差异表达分析等获得一组基因,想要进一步了解这些基因可能参与哪些生物学过程,具有哪些功能,一般就会用到基因的富集分析了。现在小麦基因注释信息已经可以获得,目前来看包括两套。一个是TGACv1,另一个就是IWGSC1.0。需要用到一个叫“clusterProfiler”的R包。下面用到的数据集来自TGACv1。1、安装source("https://bioconductor.org/b

xxxxx 1万+

(详细总结)python爬取 163收件箱邮件内容,收件箱列表的几种方法(urllib, requests, selenium)

需求:最近有一个需求,需要将163邮箱收件箱里面的所有邮件的内容全部copy下来,整理到一个word里面,不多也就28页的邮件(不要问我为什么有这需求,不告诉你),自己手动去ctrl+ cv 的话,估计要搞吐。然后就想能不能用python的爬虫来实现,虽然过程比较苦(后期改bug改的要吐了)。但是会后还是将需求实现了。这基本也算是入门了 urllib、requests、selenium这几个py...

man_tou_22 1万+

SQL中的行列转置

前言 在实际的开发过程中,我们可能会遇到这样的需求:需要将一行数据按照列拆分为多行,或者是需要将多行数据通过扩展列的形式合并为一行。这在SQL上一般称为行列转置,也就是将行转为列,列转为多行。下面我们一起来看看行列转置是如何实现的。 行列转置 1、行转列 行转列实际上是将多行数据按照某个相同的值通过扩展列的形式合并为一行数据。以下通过一个实例来说明。事先准备好3张表:student5表、score5表、subject5表。 student5表数据如下: score5表数据如下: 由于表中数据过多,所以这

qq_42640067的博客 2万+

易康eCognition9.0分类|规则集和机器学习的方法的面向对象的多尺度分割分类

基于易康eCognition9.0软件的规则集和机器学习的方法的面向对象的多尺度分割分类

weixin_46493028的博客 1万+

TDsql行转列

行转列是一种在SQL中将数据从行格式转换为列格式的方法。

weixin_43735471的博客 428

DeepFashion 服装识别:基于 YOLOv10 的深度学习实现与 UI 界面开发

随着深度学习的发展,目标检测算法在服装识别任务中表现出色,特别是 YOLO(You Only Look Once)系列模型。服装识别(Fashion Recognition)是计算机视觉领域的重要任务,广泛应用于。已提供,可用于服装分类、款式识别、虚拟试衣等应用。训练服装识别模型,并开发。

YOLO 803

信贷模型域——清收阶段模型(贷后模型)

本文深入探讨了信贷模型域中的清收阶段模型(贷后模型),涵盖早期催收模型(C卡)、晚期催收模型、Best Time to Contact模型和回收模型。这些模型通过多维度数据输入,运用分类、回归和生存分析等建模方法,输出关键指标如还款概率、回收率等,广泛应用于银行、资产管理公司和催收外包公司,助力提升回款率、优化资源分配、降低催收成本,并融入贷后风控体系。

庄小焱 654

sql经典50题之--15. 按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺

表 student sc teacher course 准备工作 1.1group by后面存在多个字段 1.2 left join sc as b 给sc起名为b 1.3 left join… on a.score<b.score 输出内容是: 是循环a表中的全部行, 与b表第一行比, 显示出满足条件的行, 行的列包...

liyang_nash的专栏 2万+

Pytorch实现之SRGAN+CBAM的结构设计

在SRGAN的残差连接中加入了CBAM注意力机制,同时设计了四类损失来训练。

LJ1147517021的博客 573

建议收藏丨sql行转列的一千种写法!!

求点赞、求评论、求收藏!!

独木不成林,单弦不成音。 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

n套SQL面试题--行转列、留存、日活等

题目来源n套SQL面试题--行转列、留存、日活等 第二套【窗口函数 实现分组取TOP N】 思路: (1)先处理场景重复的情况,建立子表a (2)添加一列row_n,按id分组进行排序 (3)取每组前两名,按id分组后,在组内用连接字符串 select concat(temp.id, '-', group_concat(temp.scene seperator '-')) from (select id, scene, time, row_number() over(parti.

yeewingho的学习笔记 2002

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

sql面试题:面试常考的sql语句题汇总(面试SQL必考必看)

我自己编辑总结的sql面试题目大全,也是每条都验证过的 第一类:sql面试题(学生表_课程表_成绩表_教师表) 表结构,节选自:http://www.cnblogs.com/qixuejia/p/3637735.html 题目一,节选,自:https://wenku.baidu.com/view/cda288f1b90d6c85ed3ac671.html 题目二,节选,自:http://ww...

HD243608836的博客 2万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

面试 SQL整理 常见的SQL面试题:经典50题

目录 ​ SQL基础知识整理: 常见的SQL面试题:经典50题 三、50道面试题 2.汇总统计分组分析 3.复杂查询 sql面试题:topN问题 4.多表查询 【面试题类型总结】这类题目属于行列如何互换,解题思路如下: 其他面试题: SQL基础知识整理: select 查询结果 如:[学号,平均成绩:组函数avg(成绩)]from 从哪张表中查找数...

sh_c1314 28万+

玩转MySQL(五)常见的SQL面试问题:行转列

前言 在面试时经常会问数据库的行转列问题,其实在项目开发中用的很多,尤其一些财务报表,这其实是考验大家对SQL查询的掌握程度,本章我们来讨论一下行转列。 什么是行转列 数据的原始数据: 学号 姓名 课程 成绩 001 张三 语文 60 001 张三 数学 89 001 张三 英语 88 002 李四 语文 88 002 李四 数学 66 002 李四 英语 90 转换后的效果: 学号 姓名 语文 数学 英语 001 张三 60 89 88 002 李四 88 66 90 ..

恒哥的博客 613

SQL | 行转列和列转行

如何使用SQL实现列转行和行转列?1 背景2 行转列2.1 读入数据2.2 需求2.3 SQL实现2.3.1 第一种方法2.3.2 第二种方法2.4 总结3 列转行3.1 需求13.2 SQL实现3.3 需求23.4 SQL实现 1 背景 为什么要做这个内容?一个是公司最近项目有涉及,另一个之前面试的时候也被问到过!所以总结一下~ 2 行转列 2.1 读入数据 ...

RUC_Lee的博客 1314

数据分析sql面试必会6题经典_SQL笔试题:数据分析SQL面试题目9套汇总

面试题目一1.题目如下2.下面开始建表、插入数据create table datafrog_test1(userid varchar(20),changjing varchar(20),inttime varchar(20));insert into datafrog_test1 values(1,1001,1400),(2,1002,1401),(1,1002,1402),(1,100...

weixin_30556403的博客 3571

常见的SQL面试题:经典50题(简单)

题目来源:知乎猴子 常见的SQL面试题:经典50题 一、简单查询 1. 查询姓“猴”的学生名单 select * from student where sname like "猴%" 2.查询姓“孟”老师的个数 select count(*) from teacher where tname like "孟%" 二、汇总分析 1.查询课程编号为“0002”的总成绩 select sum(score) from score where cid="0002" 2.查询选了课程的学生人数

yeewingho的学习笔记 1万+

行转列经典题

行转列--经典面试题一create table test(id number(10) primary key,type number(10) ,t_id number(10),value varchar2(6)); insert into test values(100,1,1,'张三');insert into test values(200,2,1,'男');insert into...

Nicole1118的博客 285

mysql sql语句面试经典50题_常见的SQL面试题:经典50题(简单)

目录一、简单查询1. 查询姓“猴”的学生名单2.查询姓“孟”老师的个数二、汇总分析1.查询课程编号为“0002”的总成绩2.查询选了课程的学生人数3.查询各科成绩最高和最低的分, 以如下的形式显示:课程号,最高分,最低分4.查询每门课程被选修的学生数5.查询男生、女生人数6.查询平均成绩大于60分学生的学号和平均成绩7.查询至少选修两门课程的学生学号8.查询同名同姓学生名单并统计同名人数9.查询不...

weixin_35559171的博客 1万+

2025最新100条常用SQL语句语法案例汇总 面试必备SQL语句大全

本文整理了2025年最新100条常用MySQL SQL语句,涵盖基础查询、聚合分组、数据操作、表管理、索引视图、连接查询、子查询、日期处理、字符串操作、事务管理等20+大类。这些语句适用于数据库开发、数据分析和运维场景,尤其适合北京、上海等一线城市互联网和金融行业的数据岗位面试准备。从基础SELECT语句到高级存储过程,内容全面实用,是提升SQL技能和应对技术面试的实用参考手册。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 3036

sql where中用case_数分面试-SQL篇

前言文中部分SQL,可能考虑不全面,欢迎大家指正文章结构:1.SQL中的进阶函数-窗口函数2.拼多多面试题case专题-商品订单数据case专题-活动运营数据case专题-用户行为路径分析case专题-用户留存分析case专题-统计特征(中位数,众数,四分位数)case专题-GMV周同比统计case专题-连续区间问题3.猿辅导面试题case专题-学生成绩分析case专题-学生做题情况分析4.Hiv...

weixin_39850167的博客 953

面试题中常考的行转列和列转行(hive sql 和mysql sql实现)

面试中,我们经常遇见行转列和列转行的题目,针对于这类题目我们做一些总结: 题目1:柠檬班第30期学生要毕业了,他们的Linux、MySQL、Java成绩数据表 tb_lemon_grade_column中, 表中字段student_name,Linux,MySQL,Java分别表示学生姓名、Linux成绩、MySQL成绩、Java成绩, 数据图1所示。请写出一条SQL,将图1的数据变成图2的形式...

沙漏遗失了年华 1102
上一篇: JavaEE,大数据-面试-Sql专题-2-MySql经典案例
下一篇: 面试-Sql专题-4-列转行
billycoder
博客等级 码龄17年 171粉丝 188原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值