聚合开窗

SUM(), MIN(),MAX(),AVG()等聚合函数

排序开窗

语法如下:

  1. R() over (partion by col1... order by col2... desc/asc)
  1. select
  2. class1,
  3. score,
  4. rank() over(partition by class1 order by score desc) rk1,
  5. dense_rank() over(partition by class1 order by score desc) rk2,
  6. row_number() over(partition by class1 order by score desc) rk3
  7. from zyy_test1;

SQL Result:Hive 窗口函数 - 图1
结论:

  • rank 会对相同数值,输出相同的序号,而且下一个序号不间断;
  • dense_rank 会对相同数值,输出相同的序号,但下一个序号,间断
  • row_number 会对所有数值输出不同的序号,序号唯一连续;

其他窗口函数

Lag, Lead, First_value,Last_value

语法

  1. LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值
  2. LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值, LAG相反
  1. -- 组内排序后,向后或向前偏移-- 如果省略掉第三个参数,默认为NULL,否则补上。
  2. select
  3. dp_id,
  4. mt,
  5. payment,
  6. LAG(mt,2) over(partition by dp_id order by mt) mt_new
  7. from test2;

Hive 窗口函数 - 图2