1,sum()函式
注:沒有order by,不僅分區內沒有排序,sum()計算的pv也是整個分割槽的pv。
max()函式無論有沒有order by 都是計算整個分割槽的最大值
2,ntile 函式
ntile(n),用於將分組資料按照順序切分成n片,返回當前切片值
注:如果切片不均勻,預設增加第乙個切片的分布
select cookieid,createtime,pv,
ntile(2) over(partition by cookieid order by createtime) as ntile1, --分組內將資料分成2片
ntile(3) over(partition by cookieid order by createtime) as ntile2, --分組內將資料分成3片
ntile(4) over(partition by cookieid order by createtime) as ntile3 --將所有資料分成4片
3,row_number 函式
應用場景:獲取分組內排序第一的記錄、獲取乙個session中的第一條refer等
rank、dense_rank、row_number三者對比:
Hive 開窗函式
普通聚合函式聚合的行集是組,開窗函式聚合的行集是視窗。因此,普通聚合函式每組 group by 只有乙個返回值,而開窗函式則可以為視窗中的每行都返回乙個值。分析函式 如 sum max row number 視窗子句 over函式 over partition by column n order b...
Hive開窗函式
show functions desc function extended upper current row 當前行 n preceding 向前取第n行 n following 向後取第n行 unbounded preceding 首行 unbounded following 尾行 order ...
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,...