Hive 開窗函式

2021-10-03 12:29:03 字數 667 閱讀 3696

普通聚合函式聚合的行集是組,開窗函式聚合的行集是視窗。

因此,普通聚合函式每組(group by)只有乙個返回值,而開窗函式則可以為視窗中的每行都返回乙個值。

分析函式(如:sum(), max(), row_number()...) + 視窗子句(over函式)
over(partition by [column_n] order by [column_m] rows between 開始位置 and 結束位置)先按照column_n分割槽,相同的column_n分為一區,每個分割槽查詢指定位置的資料並根據column_m排序(預設公升序)

over()函式中的視窗範圍說明:

常用分析函式:

注意點:

over()函式中的分割槽、排序、指定視窗範圍可組合使用也可以不指定,根據不同的業務需求結合使用

over()函式中如果不指定分割槽,視窗大小是針對查詢產生的所有資料,如果指定了分割槽,視窗大小是針對每個分割槽的資料

over()函式中的視窗範圍說明:

current row:當前行

unbounded:起點,unbounded preceding 表示從前面的起點, unbounded following表示到後面的終點

n preceding :往前n行資料

n following:往後n行資料

Hive開窗函式

show functions desc function extended upper current row 當前行 n preceding 向前取第n行 n following 向後取第n行 unbounded preceding 首行 unbounded following 尾行 order ...

hive開窗函式總結

1,sum 函式 注 沒有order by,不僅分區內沒有排序,sum 計算的pv也是整個分割槽的pv。max 函式無論有沒有order by 都是計算整個分割槽的最大值 2,ntile 函式 ntile n 用於將分組資料按照順序切分成n片,返回當前切片值 注 如果切片不均勻,預設增加第乙個切片的...

Hive 開窗函式 cume dist

題目 獲取每個班級中,以數學成績排序,取後20 成績從低到高 的學生資訊 1 準備工作 資料 studentid,classid course,score 001,001,math,15 001,002,math,20 001,003,math,35 001,004,math,40 001,005,...