日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

窗口函數

本文介紹了支持的窗口函數。

Window functions提供了跨越與當前查詢行相關的行集執行計算的能力。

內置的窗口函數羅列在通用窗口函數表中。注意,這些函數必須使用窗口函數語法來調用,也就是說,需要一個OVER子句。

除了這些函數之外,任何內置的或用戶定義的普通聚合(例如非有序集或假設集聚合)都可以作為窗口函數使用。 聚合函數只有在調用之后有一個OVER子句時才作為窗口函數;否則,它們充當普通的聚合,并為整個集合返回一行。

通用窗口函數

row_number () → bigint

返回其分區內的當前行數,從1開始計數。

rank () → bigint

返回當前行的排名,包含間隔;即對等組中第一行的row_number

dense_rank () → bigint

返回當前行的排名,不包括間隔;這個功能有效地計數對等組。

percent_rank () → double precision

返回當前行的相對排名,即(rank - 1)/ (總的分區行數 - 1)。因此,該值的范圍從0到1(包含在內)。

cume_dist () → double precision

返回累積分布,也就是(當前行之前或對等的分區行數)/(總的分區行數)。取值范圍為1/N 到 1。

ntile ( num_buckets integer ) → integer

返回一個從1到參數值的整數,并將分區劃分為盡可能相等的值。

lag ( value anyelement [, offset integer [, default anyelement ]] ) → anyelement

返回分區中在當前行之前offset行的value;如果沒有這樣的行,則返回default(必須與value具有相同的類型)。 offsetdefault都是針對當前行求值的。如果省略,offset默認為1,defaultNULL

lead ( value anyelement [, offset integer [, default anyelement ]] ) → anyelement

返回分區中在當前行之后offset行的value; 如果沒有這樣的行,則返回default(必須與value具有相同的類型)。 offsetdefault都是針對當前行求值的。如果省略,offset默認為1,defaultNULL

first_value ( value anyelement ) → anyelement

返回在窗口框架的第一行求得的value

last_value ( value anyelement ) → anyelement

返回在窗口框架的最后一行求得的value

nth_value ( value anyelement, n integer ) → anyelement

返回在窗口框架的第n行求得的value(從1開始計數),如果沒有這樣的行,則返回NULL

在通用窗口函數表中列出的所有函數都依賴于相關窗口定義的ORDER BY子句指定的排序順序。 僅考慮ORDER BY列時不能區分的行被稱為是同等行。 定義的這四個排名函數(包括 cume_dist),對于對等組的所有行的答案相同。

注意first_valuelast_valuenth_value只考慮“窗口幀”內的行,它默認情況下包含從分區的開始行直到當前行的最后一個同等行。 這對last_value可能不會給出有用的結果,有時對nth_value也一樣。 你可以通過向OVER子句增加一個合適的幀聲明(RANGEGROUPS)來重定義幀。

當一個聚集函數被用作窗口函數時,它將在當前行的窗口幀內的行上聚集。 一個使用ORDER BY和默認窗口幀定義的聚集產生一種“運行時求和”類型的行為,這可能是或者不是想要的結果。 為了獲取在整個分區上的聚集,忽略ORDER BY或者使用ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING。 其它窗口幀聲明可以用來獲得其它的效果。

重要

SQL 標準為leadlagfirst_valuelast_valuenth_value定義了一個RESPECT NULLSIGNORE NULLS選項。 這在本數據庫中沒有實現:行為總是與標準的默認相同,即RESPECT NULLS。 同樣,標準中用于nth_valueFROM FIRSTFROM LAST選項沒有實現: 只有支持默認的FROM FIRST行為(你可以通過反轉ORDER BY的排序達到FROM LAST的結果)。