博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【mysql】rollup 统计集合
阅读量:1989 次
发布时间:2019-04-27

本文共 1209 字,大约阅读时间需要 4 分钟。

数据汇总

在使用TimescaleDB数据库并做数据聚合时

SELECT 	   labels,       count(*) as sample_count,       avg(elapsed) as elapsed_avg,       percentile_cont(0.5) WITHIN GROUP (ORDER BY elapsed) as elapsed_50pcFROM     report_sampleWHERE      task_id = '63e26fe1821d45f5a1901825b1cf5dd0'group by labels;

得到的结果是

在这里插入图片描述

需要将每一列的数据做一个汇总计算,可以load到数据后在代码中进行计算,但是以上数据有个问题,即elapsed_50pc 数据获取的是中位数,在代码中无法根据获取的group by数据计算得处汇总的数据中位数

ROLLUP

PostgreSQL ROLLUP 是group by 的子句,是生成多个分组集合的快捷功能

ROLLUP假设输入列之间存在层次结构,从而生成有意义的所有分组集合

这就是为什么ROLLUP经常用于生成报表的小计和总计

修改执行的sql语句

SELECT        labels,       count(*) as sample_count,       avg(elapsed) as elapsed_avg,       percentile_cont(0.5) WITHIN GROUP (ORDER BY elapsed) as elapsed_50pcFROM     report_sampleWHERE      task_id = '63e26fe1821d45f5a1901825b1cf5dd0'group by ROLLUP(labels);

可以得出以下结果

在这里插入图片描述

很明显最后一行计算出了汇总到数据

ps:ROLLUP支持不同层级的汇总集合

CASE

但是发现最后一行的labels 为null,需要增加默认的字段信息

SELECT       CASE WHEN labels is not null THEN labels ELSE 'TOTLE' END AS labels,       count(*) as sample_count,       avg(elapsed) as elapsed_avg,       percentile_cont(0.5) WITHIN GROUP (ORDER BY elapsed) as elapsed_50pcFROM     report_sampleWHERE      task_id = '63e26fe1821d45f5a1901825b1cf5dd0'group by ROLLUP(labels);

得到的结果如下

在这里插入图片描述

搞定

转载地址:http://mptvf.baihongyu.com/

你可能感兴趣的文章
HDU - 5643 King's Game (约瑟夫环变式)
查看>>
UVA - 1452 Jump (约瑟夫环变式)
查看>>
POJ - 3517 And Then There Was One (约瑟夫环变式)
查看>>
HDU - 2068 RPG的错排 (错排+组合数)
查看>>
CodeForces 591C Median Smoothing(思维 模拟)
查看>>
升级yosemite后java出错的解决
查看>>
Spring Cloud Spring Boot b2b2c 微服务 多商家入驻直播商城之Maven 项目模板
查看>>
mac || Linux 命令行下实现批量重命名
查看>>
java常用类 String面试题
查看>>
Windows10下的powershell美化教程
查看>>
利用ffmpeg合并音频和视频
查看>>
刷好老毛子系统进不了老毛子系统后台的解决办法
查看>>
Parallels Desktop 16 不能联网的解决办法
查看>>
ERROR 1292 (22007): Incorrect datetime value: ‘2002‘ for column ‘出版日期‘ at row 1
查看>>
SLAM中TUM数据集更改图片名字
查看>>
手把手教你--jquery chosen插件的使用和API(html下拉框美化)
查看>>
手把手教你--jsp读取配置文件(properties文件)--(JSTL的fmt:setBundle和fmt:message读取properties文件)
查看>>
手把手教你--JAVA微信支付(H5支付)
查看>>
solr修改schema文件(solr修改配置文件)
查看>>
Bootstrap datetimepicker日期时间插件使用方法(日期时间选择器)
查看>>