Sql 实现数据透视表功能
总第148篇/张俊红
讲过很多次,数据分组和数据透视表很像,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 语句如下:
selectdate,count(orderid)
fromt
group by date
现在我们想看一下每个区域每天的一个成交情况,那是不是在上面代码的基础上再加一个用来判断区域的一个条件,就可以得出每个区域的情况了。
selectdate,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 实现数据透视表功能
讲过很多次,数据分组和数据透视表很像,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 ...
- sql同时修改两个表的数据_如何用SQL做数据透视表?
- 点击上方"中国统计网"订阅我吧!- 讲过很多次,数据分组和数据透视表很像,Sql 中的数据分组大家应该都很熟悉了,用的就是 group by. 数据透视表是作为一个数据分析师最 ...
- [Excel] 用sumproduct函数实现数据透视表功能
目录 1. sumproduct函数实现销售额统计 1.1 总额 1.2 单分类 1.3 二分类 1.4 三分类 2 其他 假设某公司某年二季度的销售额如下,要求按模板格式需要填报产品销售额. 其实从 ...
- python实现Excel中的数据透视表功能
主要利用pandas包中的pd.pivot_table()函数. male_emo=pd.pivot_table(emo,index='year',columns='emotion',values={ ...
- 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 ...
- 数据透视表上线!如何在纯前端实现这个强大的数据分析功能?
在Office三大办公套件中,Excel可能是功能最多.最难精通的那一款了.从日常的表格录入到复杂的业务数据统计分析,Excel仿佛一位外表平平无奇,实力却深不可测的武林高手.熟练使用Excel往往能 ...
最新文章
- 干货 | 神经网络原来这么简单,机器学习入门贴送给你
- Asp.Net SignalR 集线器不使用代理的实现
- 回档|2015.3.05
- C++11中的bool变量不进行初始化,结果随机,可能是false也可能是true,所以一定要初始化
- DataTable / DataSet 与 xml 的相互转换
- DayDayUp:哈哈,你上榜了嘛?界面新闻发布2020年中国最富1000人榜,总财富增加28%
- get request uni 参数_uni-app 环境配置,uni.request封装,接口配置,全局配置,接口调用的封装...
- codeforces1435 D. Shurikens
- 【渝粤题库】广东开放大学 民事诉讼法学 形成性考核
- oracle nvl和coalesce,NVL与Coalesce之间的Oracle差异
- 计算机上课创意互动游戏初中,16个课前热身小游戏:让每一堂课都充满新鲜感...
- sqlDevelopor客户端操作MySQL数据库
- 什么是Bootstrap?
- instead of触发器实现复杂视图dml和应用逻辑
- EMOS1.6下的php支持GD库
- VS2017 离线安装包下载
- matlab如何读取一个图片,怎么用Matlab读入并显示图片文件
- windows10开启http代理服务
- orocos安装_动脑共享单车环境搭建
- 电驴怎么显示服务器列表,(转)如何更新电驴服务器列表(eMule Server List)
热门文章
- windows使用命令行创建文件echo >test.txt(可以是.gp .js .ts..)
- Java汉字转拼音库,Pinyin4j
- 数字孪生 3D 风电场,智慧风电之海上风电
- 动态链接函数dlsym()的参数RTLD_NEXT使用注意事项
- 如何使用Socks5代理IP加密Windows网络数据传输
- 美国Linux服务器系统增强安全的配置
- Shipping Grants
- GIF录制器之-ScreentoGif--非常好用
- Unity Shader:实现菲涅尔+色散效果的环境映射以及相关原理解析
- 笔记本计算机的功率一般多少钱,笔记本电脑功率是多少?笔记本功率简单的查看方法...