學(xué)習(xí)PG聚合操作機(jī)制時(shí),看到ExecInitAgg中初始化時(shí)有對(duì)AggState中有pergroups等進(jìn)行初始化[AggState的解釋見(jiàn)上一篇:GreenPlum7聚合操作結(jié)構(gòu)體之間關(guān)系
那么什么是pergroups呢,它的作用是什么?
ExecInitAgg中:可以看到組數(shù)等于組集合數(shù)(若沒(méi)hash的話),每個(gè)分組中有numaggs個(gè)聚集
這里就需要理解什么是grouping sets。
PostgreSQL9.5版本引入了group by的分組集合功能,提供了GROUPING SETS,CUBE,ROLLUP參數(shù)。這些新的標(biāo)準(zhǔn)SQL選項(xiàng)可以讓用戶在一次查詢中生成多個(gè)不同級(jí)別或者多維度的報(bào)表,而不是像以前一樣需要幾次查詢。
postgres=# create table t1(id1 int,name varchar(20),class int,score int);
CREATE TABLE
postgres=# select * from t1; id1 | name | class | score
-----+----------+-------+-------
1 | math | 1 | 50
2 | math | 2 | 90
3 | math | 1 | 70
5 | chinese | 1 | 50
6 | chinese | 2 | 60
4 | chinese | 2 | 60
7 | physical | 1 | 90
8 | physical | 2 | 80
(8 行記錄)
首先看下普通的group by:根據(jù)name和class字段求和:
可以看到到僅一個(gè)聚合分類。那么再看下GROUPING SETS語(yǔ)法:
有3種聚合分類:1)針對(duì)name進(jìn)行分組然后求sum值;2)針對(duì)class進(jìn)行分組,然后求sum值;3)grouping sets種的空,表示所有行都聚合到一個(gè)分組中。
需要注意,grouping sets的集合中,一個(gè)括號(hào)一個(gè)分組,如下(name,class)為一個(gè)分組。該語(yǔ)句等價(jià)于普通的group by。
總結(jié):grouping sets中有一個(gè)集合,則有一個(gè)聚合;若有2個(gè)集合,則2個(gè)聚合。
-
SQL
+關(guān)注
關(guān)注
1文章
789瀏覽量
45986
發(fā)布評(píng)論請(qǐng)先 登錄
進(jìn)行濾波器的諧波測(cè)試,它的作用是什么呢
高壓放大器的作用是什么呢


關(guān)于ads1298的右腿驅(qū)動(dòng)部分,有一個(gè)右腿驅(qū)動(dòng)參考電壓,請(qǐng)問(wèn)這個(gè)參考電壓的作用是什么啊,是由什么決定的呢?
ADS4125數(shù)據(jù)輸出口接了緩存器和排阻,這排阻的作用是什么呢?
ADS1298配置寄存器3:RLD_LOFF_SENS位的控制作用是什么呢?
ads1174中的DIN腳的功能說(shuō)是Daisy-chain,它的作用是什么?
高度ADC輸入緩沖器作用是什么?
安泰:電壓放大器原理和作用是什么意思

安泰高壓大功率放大器的作用是什么

評(píng)論