postgresql中的rollup

摘要:
在postgresql中,rollup是groupby的子句,提供了多个分组集的简便方式。分组集是用户用于分组的一组列的集合。与cube语句不同,rollup不会在指定的列上产生所有可能的分组集。rollup假设输入的列上有层次结构,根据层次结构生成分组集。这就是为什么rollup会经常用于生成报表的grangtotal和subtotals。例如,cube会生成八个可能的分组集:()然而,rollup只会生成四个分组集,假设层次关系是c1˃c2˃c3:()常见的用途是使用rollup来计算根据year、month、date进行聚合的数据,设定层次关系是year˃month˃date。

在postgresql中,rollup是group by的子句,提供了多个分组集的简便方式。分组集(grouping set)是用户用于分组的一组列的集合。

与cube语句不同,rollup不会在指定的列上产生所有可能的分组集。

rollup假设输入的列上有层次结构,根据层次结构生成分组集。这就是为什么rollup会经常用于生成报表的grang total和subtotals。

例如,cube(c1,c2,c3)会生成八个可能的分组集:

()
(c1)
(c2)
(c3)
(c1,c2)
(c1,c3)
(c2,c3)
(c1,c2,c3)

然而,rollup(c1,c2,c3)只会生成四个分组集,假设层次关系是c1>c2>c3:

()
(c1)  
(c1,c2)
(c1,c2,c3)

常见的用途是使用rollup来计算根据year、month、date进行聚合的数据,设定层次关系是year>month>date。

以下是语法:

select c1,c2,c3,aggregate(c4)
from table_name
group by rollup(c1,c2,c3);

也可以执行部分rollup操作来减少subtotals的生成:

select c1,c2,c3,aggregate(c4)
from table_name
group by c1,
rollup(c1,c2,c3);

免责声明:文章转载自《postgresql中的rollup》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇element日期时间段选择器的使用心得【10】react 之 react-router下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Malleable-C2-Profiles配置

唔,水文水文…. 关于Malleable-C2-Profiles 在日常的渗透测试工作中,我们需要做很多的规避操作,因为我们所使用的C2工具等,可能早已被AV等防护软件所标记,所以我们需要订制我们的攻击工具。而这就引出了我们的今天的重点Malleable C2 ,Malleable C2 是 Cobalt Strike 的一项功能, 意为 “可定制的” 的...

base64的编码解码的一些坑

1、 //编码 value = base64encode(utf16to8(src)) //解码 value = utf8to16(base64decode(src))这里:base64编码之前先转成utf8,解码出来的也要从utf-8转为utf-16 2、base64编码分为字符串编码成字符串,字符串编码成数组,字符串解码成数组,字符串解码成字符串,等...

java四种访问权限

java有四种访问权限,它们各自的范围如下图所示 当下列访问修饰符修饰字段和方法时: private 任意位置的子类不可以访问从父类继承的private字段和方法。这里所说的访问包括通过super关键字访问。 任意位置的对象不能通过“.”访问对象的字段和方法。 public 任意位置的子类可以访问从父类继承的public字段和属性。 任意位置的对象可以通...

三级联动下拉菜单1

一:HTML代码 1 <select id='c1'></select> 2 <select id='c2'></select> 3 <select id='c3'></select> 二: 三级菜单数组举例定义(实际从数据库中获取) var city1 = ['请选择','江苏'...