利用 Sql 实现数据透视表功能
讲过很多次,数据分组和数据透视表很像,Sql 中的数据分组大家应该都很熟悉了,用的就是 group by。数据透视表是作为一个数据分析师最基本,也是使用频率最高的一个功能了,我们可以把明细数据从数据库导出来,然后在 Excel 里面做透视表,也可以直接在数据库里面做透视表,然后将透视结果进行导出。这篇我们来看看 Sql 中的数据透视表怎么做,这里以 Mysql 数据库为例。
要讲怎么在 Sql 中做透视表,我们还是先看看什么是透视表,其实透视表的核心就是按照行列同时分组,然后对分组后的值进行某种汇总运算。
现在有这么一张表 t,存储的字段如下:
orderid price date area
S001 10 2019/1/1 A区
S002 20 2019/1/1 B区
S003 30 2019/1/1 C区
S004 40 2019/1/2 A区
S005 10 2019/1/2 B区
S006 20 2019/1/2 C区
S007 30 2019/1/3 A区
S008 40 2019/1/3 C区
现在我们想看一下每个区域每天的订单量,就是下表这个样子,我们该怎么做呢?
A区 | B区 | C区 | |
---|---|---|---|
2019/1/1 | |||
2019/1/2 | |||
2019/1/3 |
如果要是在 Excel 中做的话就很简单,直接做一个透视表就ok了,把 date 拖到行那个框,将 area 拖到列那个框,将 orderid 拖到值那个框,然后对 orderid 进行计数运算即可。
在 Sql 中,如果我们只是看每一天的订单量的话是不是只需要直接按照成交日期进行 group by 就行,Sql 语句如下:
select,date,count(orderid)
fromt
group by date
现在我们想看一下每个区域每天的一个成交情况,那是不是在上面代码的基础上再加一个用来判断区域的一个条件,就可以得出每个区域的情况了。
select,date,count(case when area = "A区" then orderid end) as "A区",count(case when area = "B区" then orderid end) as "B区",count(case when area = "C区" then orderid end) as "C区"
fromt
group by date
最后结果如下:
A区 B区 C区
2019/1/1 1 1 1
2019/1/2 1 1 0
2019/1/3 1 1 1
当然了,聚合函数不止可以用 count,还可以用别的聚合函数,比如说,我们想看一下每个区域每一天的营业额,就是所有订单的 price 相加。Sql 代码如下:
select,date,sum(case when area = "A区" then price else 0 end) as "A区",sum(case when area = "B区" then price else 0 end) as "B区",sum(case when area = "C区" then price else 0 end) as "C区"
fromt
group by date
最后结果如下:
A区 B区 C区
2019/1/1 10 20 30
2019/1/2 40 10 20
2019/1/3 30 0 40
以上就是关于利用 Sql 做数据透视表的一个基本讲解,用 case when 这种方法虽然可以实现数据透视表的功能,但是无论从代码量还是运行速度方面都不是特别理想,如果大家有别的更好的方法,欢迎评论区一起交流。
点分享
点收藏
点点赞
点在看
利用 Sql 实现数据透视表功能相关推荐
- Sql 实现数据透视表功能
总第148篇/张俊红 讲过很多次,数据分组和数据透视表很像,Sql 中的数据分组大家应该都很熟悉了,用的就是 group by.数据透视表是作为一个数据分析师最基本,也是使用频率最高的一个功能了,我们 ...
- sql同时修改两个表的数据_如何用SQL做数据透视表?
- 点击上方"中国统计网"订阅我吧!- 讲过很多次,数据分组和数据透视表很像,Sql 中的数据分组大家应该都很熟悉了,用的就是 group by. 数据透视表是作为一个数据分析师最 ...
- 学习SQL:SQL Server数据透视表
In the previous few articles in this series, we've set the foundations on how to create a report. We ...
- python 利用win32com进行数据透视表绘制
在日常处理中或许会用到数据透视表的功能,但发现对于使用win32com来做数据透视表的介绍有点少. 接下来就是介绍利用win32com进行数据表创建 这也是一个查找的资料的例子,只是稍作了修改,使得可 ...
- python实现Excel中的数据透视表功能
主要利用pandas包中的pd.pivot_table()函数. male_emo=pd.pivot_table(emo,index='year',columns='emotion',values={ ...
- [Excel] 用sumproduct函数实现数据透视表功能
目录 1. sumproduct函数实现销售额统计 1.1 总额 1.2 单分类 1.3 二分类 1.4 三分类 2 其他 假设某公司某年二季度的销售额如下,要求按模板格式需要填报产品销售额. 其实从 ...
- python多个sheet数据透视表_python 用pandas实现数据透视表功能
透视表是一种可以对数据动态排布并且分类汇总的表格格式.对于熟练使用 excel 的伙伴来说,一定很是亲切! pd.pivot_table() 语法: pivot_table(data, # dataf ...
- python实现数据透视表功能
python 有专门的包来做数据透视表,即pandas中的pivot_table,代码如下:import pandas as pdimport numpy as npa = pd.read_csv(' ...
- 数据透视表与mysql_通过sql做数据透视表,数据库表行列转换(pivot和Unpivot用法)(一)...
在mssql中大家都知道可以使用pivot来统计数据,实现像excel的透视表功能 一.MSsqlserver中我们通常的用法 1.Sqlserver数据库测试 ---创建测试表 Create tab ...
最新文章
- 增量加载(Incremental Loads)
- 软件测试用python一般用来做什么-python能够做软件的自动化测试吗?
- oracle每天自增长,oracle的自增长
- SAP Spartacus CMSFlexComponent
- Java 8的方法参考进一步限制了重载
- php 识别图片主色调,PHP 判断图片主色调的简单示例
- SQL Server检索存储过程的结果集
- awt中监听输入框textField
- 【3.2】抽象基类(abc模块)
- flash计算机代码怎么写,应用程序操作NorFlash示例代码分享(norflash接口使用方法)...
- python(模块)xlsxwriter
- 大数据分析方法有哪几种?
- xss绕过字符过滤_xss绕过过滤之方法
- 两个可能常用到的几何知识(圆与椭圆的方程、求垂直向量)
- 这个发现是否会是RSA算法的BUG、或者可能存在的破解方式?
- 纯css3 夜晚天空月亮动画特效(源码公益站)
- 学PPT,我们一定要ldquo;好色rdquo;
- Python数据分析学习系列 十一 时间序列
- mysql编写函数_mysql函数编写
- 炎炎夏日,如何选择适合自己肤质的面膜