第5章Excel数据分析之数据透视表遇见SQL

文章目录

第5章 数据透视表遇见SQL
5-1如何在查询中使用SQL语句?

1、制作数据透视表时编写SQL语句

外部数据源制作动态数据透视表

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

找到文件数据

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

统计工资>=8000各部门有多少人

在这里插入图片描述

select * from [数据源$] where 基础工资>=8000

在这里插入图片描述

在这里插入图片描述

2、3d快捷键导入外部数据时SQL语句编写

先按Alt 松开,再按d松开,再按d松开,再按d松开

Alt+d+d+d

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5-2SQL查询语句(数据透视表的辅助列)

1.如何编写SQL查询语句

alt+d+d+d导入外部数据源放在新工作表,成超级表格

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

编写SQL语句

在这里插入图片描述

获取全部字段

select * from [销售表$]

获取某个字段

select 日期,数量 from [销售表$]

在这里插入图片描述

在这里插入图片描述

2.如何添加新增列(辅助列)

新增金额

select  *,数量*单价 as 金额  from [销售表$]

操作步骤:

1)导入数据

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2)数据透视表新增一列
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5-3SQL常用运算符(案例:添加分析维度)
  1. 算术运算符:+、-、*、/、\
   select *,单价+1 from  [销售表$]

在这里插入图片描述

  1. 比较运算符:>、>=、<、<=、<>、=
   select *,数量>=400 from [销售表$]

在这里插入图片描述

  1. 连接运算符:&
   select *,名称&"-"&单价 from [销售表$]

在这里插入图片描述

  1. 逻辑运算符:and、or、not
   select *,-1 and -1 and -1 from [销售表$]

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

select *,-1 or 0 or -1 from [销售表$]

在这里插入图片描述

select *,not 0 from [销售表$]

在这里插入图片描述

判断金额>=2000

在这里插入图片描述

5-4SQL筛选语句(数据透视表数据源的过滤)

1.普通筛选

select * from [销售表$] where 数量>=200

在这里插入图片描述

2.与关系筛选

select * from [销售表$] where 数量>=200 and 数量<=300

两个条件同时满足

在这里插入图片描述

3.或关系筛选

select * from [销售表$] where 单价>=5 or 数量<=400

只要一个条件满足

在这里插入图片描述

4.日期数据筛选

日期书写使用 ##

select * from [销售表$] where (单价>=5 or 数量<=400) and 日期<=#2022-1-5#

在这里插入图片描述

制作数据透视表

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5-5SQL语句(逻辑运算符升级版)

1.Between(可以看作and的简化)

 select * from [销售表$] where 数量>=100 and  数量<=200       
 select * from [销售表$] where 数量 between 100  and 200      
 select * from [销售表$] where 日期 between  #2022-1-5# and #2022-1-10# 

2.In(可以看作or的简化)

select * from [销售表$] where  名称="小米" or 名称="大豆" or 名称="红豆" 
 select * from [销售表$] where 名称 in  ("小米", "大豆" ,"红豆") 
 select * from [销售表$$]  where 名称 in (select  名称 from [条件表$]) 
5-6SQL的like运算符-1(字符串模糊筛选)

1.任意多个字符%

2.任意单个字符_

3.%与_的常见应用方法

like 是 等于
select * from [销售表$] where 名称 like “大%” 以"大"字开头的名称
select * from [销售表$] where 名称 like “%豆” 以"豆"字结尾的名称
select * from [销售表$] where 名称 like “%水%” 包含"水"字的名称
select * from [销售表$] where 名称 like “___” 三根下划线就是三个字符名称
select * from [销售表$] where 名称 like “_稻” 以“稻”结尾的两个字符的名称
5-7SQL的like运算符-2(字符组的应用)

字符组表示方法:[……],表示字符长度为1。[!……]表示排除字符组中的字符。
汉字:[一-龥]
字母:[a-z]
数字:[0-9]

要求 语句
以字母开头的品名 select * from [订单表$] where 品名 like “[a-z]%”
以abcd开头的品名 select * from [订单表$] where 品名 like “[abcd]%”
以数字开头的品名 select * from [订单表$] where 品名 like “[0-9]%”
以13579开头的品名 select * from [订单表$] where 品名 like “[13579]%”
包含%的品名 select * from [订单表$] where 品名 like “%[%]%”
包含_的品名 select * from [订单表$] where 品名 like “%[_]%”
不以字母开头的品名,加! select * from [订单表$] where 品名 like “[!a-z]%”
以汉字开头的品名 select * from [订单表$] where 品名 like “[一-龥]%”
5-8SQL语句之前几项与唯一值

1.TOP前几项

2.Distinct获取唯一值

前三项 select top 3 * from [销售表$]
去重 select distinct * from [销售表$]
对日期去重 select distinct 日期 from [销售表$]

3.实例:统计每天的采购品名数

select distinct 日期,名称 from [销售表$]

在这里插入图片描述

5-9SQL语句之排序(采购数量前100汇总)

1.排序(升序asc、降序desc)

以数量进行升序 select * from [销售表$] order by 数量 asc
以数量进行降序 select * from [销售表$] order by 数量 desc
以数量、单价进行降序 select * from [销售表$] order by 数量 asc,单价 asc
以日期进行排序 select * from [销售表$] order by 日期

2.实例:对采购数量前100汇总

select top 100 * from [销售表$] order by 数量 desc

在这里插入图片描述

5-10SQL语句之分组聚合-1(数据汇总分析)

1.group by分组基本写法

统计每一日的总金额

select 日期,sum(数量*单价) as 总金额 from [销售表$] group by 日期

在这里插入图片描述

2.实例1:统计出总金额大于等于10000的日期。
3.实例2:对采购金额用千为频段,统计记录数。

获取频段:

select  数量*单价\1000 as 频段 from [销售表$] group by 数量*单价\1000

在这里插入图片描述

统计记录数:

select  数量*单价\1000 as 频段,count(*) as 计数  from [销售表$] group by 数量*单价\1000

在这里插入图片描述

5-11SQL语句之分组聚合-2(条件分组)

1.多字段分组

select 日期,名称,count(*) as 计数 from [销售表$]  gr
MS Query基础语法讲解: 一、单表查询 单表查询是指仅涉及一个表的查询 1、查询指定列 例1、查询材料进货明细表中的定额名称及规格 SELECT 定额名称,规格 FROM [材料进货明细表$] 注意:在excel中,一个工作表的表示是这样的:[工作表名称$] select的意思是:查询 上面那一句SQL语句的意思就是:从表材料进货明细表中取出定额名称及规格的值 例2、查询材料进货明细表的详细记录 SELECT * FROM [材料进货明细表$] 等价于: SELECT 序号, 定额名称,规格,日期,单位,数量 FROM [材料进货明细表$] 注意:*的用法 2、查询经过计算的值 例3、查询材料进货明细表的定额名称、规格、年份及数量 SELECT 定额名称,规格,year(日期) as 年份,数量 FROM [材料进货明细表$] 注意:里面的年份已经通过了计算的了,成为一个新的变量。 加多一列自定义的列A厂: SELECT “A厂” ,定额名称,规格,year(日期) as 年份,数量 FROM [材料进货明细表$] SELECT “A厂” as 工厂 ,定额名称,规格,year(日期) as 年份,数量 FROM [材料进货明细表$] 比较一下上面两句SQL语句的区别,没有as 工厂与有as 工厂的区别 二、选择表中若干元组 1、消除取重复的行 例4、查询材料进货明细表的定额名称 SELECT 定额名称 FROM [材料进货明细表$] 该查询结果会包含很多重复的行。消除重复行的话,必须指定关键词 distinct SELECT distinct 定额名称 FROM [材料进货明细表$] 2、查询满足条件的元组 例5、查询材料进货明细表中单位为“套”的所有记录 SELECT * FROM [材料进货明细表$] where 单位= ‘套’ 本句语句中,要学会where的用法: 要查询满足指定条件的元组,可以通过where子句实现。where子句查询条件是: 比较: =,>,<,>=,<=,!=,<>,!>,!<;not +上述比较运算符 确定范围: between and ,not between and 确定集合:in,not in 字符匹配:like,not like 空值:is null,is not null 多重条件:and,or,not 例6、查询材料进货明细表中数量在50—100之间的所有记录 SELECT * FROM [材料进货明细表$] where 数量 between 50 and 100 如果是不在50-100之间的话,直接改成: SELECT * FROM [材料进货明细表$] where 数量 not between 50 and 100 例7、查询材料进货明细表中单位为“只”或“支”的所有记录 SELECT * FROM [材料进货明细表$] where 单位 in(‘只’,'支’) 3、字符匹配 可以用like来实现,通配符%和_ a、%代表任意长度的字符串,如a%b表示以a开头,以b结尾的任意的字符串 b、_代表任意单个字符 例8、查询材料进货明细表中定额名称以“天津”开头的所有记录 SELECT * FROM [材料进货明细表$] where 定额名称 like ‘天津%’ 例9、查询材料进货明细表中定额名称以“天津”开头且字符为4个的所有记录 SELECT * FROM [材料进货明细表$] where 定额名称 like ‘天津__’ 例10、查询材料进货明细表中定额名称不以“天津”开头的所有记录 SELECT * FROM [材料进货明细表$] where 定额名称 not like ‘天津%’ 4、涉及空值的查询 主要是以:null出现 例11、查询材料进货明细表中规格为空的的所有记录 SELECT * FROM [材料进货明细表$] where 规格 is null 5、多条件查询 例12、查询材料进货明细表中定额名称为“天津三通”的并且数量大于30的所有记录 SELECT * FROM [材料进货明细表$] where 定额名称 = ‘天津三通’ and 数量>30 三、order by 子句 desc(降序)、asc(升序) 例13、查询材料进货明细表中数量大于30的所有记录,并且要按照数量来降序排列。 SELECT * FROM [材料进货明细表$] where 数量>30 order by 数量 desc 四、聚集函数 count(distinct/all 列名):统计元组个数 sum:求和 avg:求平均值 max:最大值 min:最小值 例14、查询材料进货明细表中天津大小头的最大数量。 SELECT max(数量) FROM [材料进货明细表$] where 定额名称 = ‘天津大小头’ 或:SELECT max(数量) as 最大数量 FROM [材料进货明细表$] where 定额名称 = ‘天津大小头’ 2. Excel源数据及分析下载:Excel数据透视表教程:分类百分比 SQL语句: select *, Hz1.分类销量/Hz2.分类销量 as 分类百分比 from (select 品种,分公司, sum(数量) as 分类销量 from [数据$] group by 品种,分公司) Hz1, (select 分公司, sum(数量) as 分类销量 from [数据$] group by 分公司) Hz2 where hz1.分公司=Hz2.分公司 SQL语句解释: select 品种,分公司, sum(数量) as 分类销量 from [数据$] group by 品种,分公司 实现对品种、分公司两字段分组的统计求和 select 分公司, sum(数量) as 分类销量 from [数据$] group by 分公司 实现对分公司字段分组的统计求和 对分公司分组统计求和数是对品种、分公司两字段分组统计求和项目再对不同品种的总就和,也就是后者包含前者。 整句语句的意思就是,将两个查询结果作为新的查询表分别命名为Hz1、Hz2,用 ”where hz1.分公司=Hz2.分公司“来组合数据, 没有条件的制约的话,将统计的结果再进行除数运算, 各品种的分组统计数(分组含品种字段)除以各品种已求和了的分组统计数(分组不含品种字段)求得所占比率, 最后在字段单元格设置为百分数就可以了。 3 在Excel中使用MS Query查询外部数据库的内容的优点是:不用设置公式、编写VBA代码、源数据库不用打开。 但要注意:源数据库的记录要有字段名,由于设置查询时的路径固定,。 因此源数据库文件不能随意移动(如确实要移动可以通过手工修改查询或VBA解决) 以下示例采用MS Query在“查询”工作簿中查询关闭的“销售”工作簿中sheet1的指定 “店铺”和指定“颜色”的内容(sheet1有“店铺”、“数量”、“颜色”等字段名及若干数据)。 操作前请先确定是否安装有MS Query。附上举例文件,请解压到D盘根目录下: 销售.xls为源数据,查询.xls中设置了msquery查询。 下载:MS Query查询未打开工作簿的内容例子 1、 新建一个工作表,选择菜单【数据】—【导入外部数据】—【新建数据库查询】, 界面如图,由于查询excel数据库的内容,因此选择【Excel Files*】并确定; 2、 弹出〖选择工作簿〗对话框,选择“销售”工作簿,〖确定〗; 3、 弹出〖选择列〗对话框,如果此时弹出“没用内容”,确定后在〖选项〗中将“系统表”勾上。 将所选工作簿的各个工作表及工作表中的字段名添加到查询结果中,全选可直接将工作表名添加, 〖下一步〗〖下一步〗,选择“在MS query中继续编辑查询”; 4、 弹出MS Query查询编辑,点击【显示/隐藏条件】图标,在“条件字段”中添加“店铺”, 值改为“[店]”(方括号中内容随意),再添加个条件为“颜色”,值改为“[色]”,点击【将数据返回Excel5、 回到excel的“导入数据”对话框,点击〖参数〗,选中“店”字段,再选择“从下列单元格中获取数据”, 选择一个用来更改查询关键字的单元格(如B1),并勾选“单元格值更改时自动刷新”, “色”字段改成从单元格“B2”中获取,〖确定〗。数据放置位置选择“A3”。〖确定〗。 6、 当更改B1和B2单元格的内容(做个数据有效性)时,A3及以下的数据会即时刷新。 此法对于需要经常在局域网中查询数据非常方便,比如:数据放在局域网内的一台主机上,通过MS Query即可不打开工作簿查询数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值