![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
SQL实例
MYSQL查询实例
°﹏Struggle丶岚
以凡人之躯,比肩神明。
展开
-
7-计算时间段内特定范围内的人员组合
要求、结果如图with t1 as ---货车表数据(select 1 as 顺序, 1001 as 车队编号, '张三' as 车主姓名, 10 as 载货量 from dualunion allselect 2, 1001, '李四', 15 from dualunion allselect 3, 1001, '王五', 10 from dualunion allselect 4, 1001, '马六', 30 from dualunion allselect原创 2021-02-07 11:47:50 · 83 阅读 · 0 评论 -
5-两表字段相减
1.1)1.2)2)结果代码select x.F1, x.F2, x1.FSl - x2.FSl as FSlfrom ( select x.F1, x.F2 from Cte1 x union select x.F1, x.F2 from Cte2 x) xouter apply ( select isnull(sum(y.FSl), 0.0) as FSl from Cte1 y where y.F1 = x原创 2021-02-07 11:47:12 · 136 阅读 · 0 评论 -
3-删除多余的相同的数据,保留ID最小的数据
DELETE FROM student WHERE idin ( SELECT a.id as id FROM ( SELECT s2.id as id FROM student s1 ,student s2 WHERE s1.`name` = s2.`name` AND s1.age = s2.age AND s1.id < s2.id ) AS a )原创 2021-02-07 11:46:19 · 141 阅读 · 0 评论 -
4-男女分组
1)原始数据2)要求结果3)实现代码(sqlserver2012以上,其他数据库要稍微改写一下)with CteData as ( /*0)测试数据,可以来自数据库*/ select 'A01' as FCode, '男' as FGender union all select 'A02' as FCode, '男' as FGender union all select 'A03' as FCode, '男' as FGender union all原创 2021-02-07 11:45:45 · 169 阅读 · 0 评论 -
6-两表两列数据匹配
**问题:**数据库2张表做关联,A表字段a,B表字段b,如果a列包含b列的内容,就关联,这个应该怎么写?mysql数据库数据表示例如下:一、with Cte1 as ( select 1 as FA, 'a' as FB, 'c' as FC union all select 2 as FA, 'b' as FB, 'd' as FC union all select 3 as FA, 'c' as FB, 'x' as FC), Cte2 as (原创 2021-02-06 16:20:54 · 435 阅读 · 2 评论 -
2-实现统计
前言:在某些应用场景中,我们经常会遇到一些排名的问题,比如按成绩或年龄排名。排名也有多种排名方式,如直接排名、分组排名,排名有间隔或排名无间隔等等,这篇文章将总结几种MySQL中常见的排名问题。创建测试表create table scores_tb ( id int auto_increment primary key, xuehao int not null, score int not null) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert原创 2021-02-06 16:20:20 · 69 阅读 · 0 评论 -
11-拆分逗号分隔的字符串
IDNAME1‘张三,李四,王五’2‘a,b,c,d,e’想要拆解成下面的样子:IDNAME1张三1李四1王五2a2b2c2d2e-----第一种方法-- 创建需要划分的字符串 with T1 as( select 1 as id ,'张三,李四,王五' as name from dual union all select 2 as id ,'a,b,c...转载 2021-02-06 16:17:02 · 476 阅读 · 0 评论 -
12-in函数多字段匹配
实例一:from user_tables t where (t.TABLE_NAME, t.TABLESPACE_NAME) in ( ('LOCATIONS', 'EXAMPLE') );实例二:select t.TABLE_NAME, t.TABLESPACE_NAME from user_tables t where (t.TABLE_NAME, t.TABLESPACE_NAME) in (select 'LOCATIONS', 'EXAMPLE' from原创 2021-02-06 16:16:04 · 131 阅读 · 0 评论 -
10-多行转多列
原表:需要将此表转化成如下的格式:可以将原表中的数据理解为超市找中的不同产品在不同的日期的销售额,其实在真实的超市中有很多都是这样做的,将每个月有多少个日期就写多少列, 这样做的好处是可以通过二维的坐标快速找到产品在某个日期的销售额,但是不利于汇总计算。当我们将上面的格式转化为下面这种以行为单位,每一个产品的每一个日期的销售额占一行的时候,我们进行汇总计算就显得非常方便了,尤其是大数据量的时候,更是如虎添翼。现在我们来分析一下这个题目,从目标表与原表的对比中发现,目标表是六条数据,原表中只有两条转载 2021-02-06 16:15:27 · 157 阅读 · 0 评论 -
8-计算设备的所有零件数量
数据代码:with t1 as (select '房间' as product,'桌子' as fitting,2 as num from dualunion allselect '房间','椅子',3 from dualunion allselect '房间','镜子',3 from dualunion all select '桌子','木头块',5 from dualunion allselect '镜子','木头块',5 from dualunion allsele.转载 2021-02-06 16:14:30 · 279 阅读 · 0 评论 -
9-固定时间段内的工作时间求和
类似于使用打卡时间求一段时间内的工作时间之和,给出的表数据大致是这样的。ID:车间IDgid:设备idACTIVITY:类型 ,有两种:in 开启, out 关闭时间:启动或者关闭的时间点现在的要求是输入一个开始时间 和一个结束时间 求每台设备(同一车间的同一设备)的在此范围内的工作时间。异常数据处理:1.重复数据需要去重2.同一台设备连续的in 需要取最后一个 3.连续的out需要取第一个4.如果一个时间段的开始时间小于输入的开始时间,则按照输入开始时间计算5.如果一个时间段的转载 2021-02-06 16:13:17 · 488 阅读 · 0 评论 -
1-行转列、数据分组
1)基础数据2)要求结果3)代码实现(其实你的数据不是这样,我没看到,应该有顺序的,会更简单)with CteData as ( select 1 as AlarmType, 'Text1' as Value union all select 1 as AlarmType, 'Time1' as Value union all select 1 as AlarmType, 'Priority1' as Value union all sele转载 2021-02-06 16:11:17 · 117 阅读 · 0 评论