普通聚合函式聚合的行集是組,開窗函式聚合的行集是視窗。
因此,普通聚合函式每組(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,...