impala开窗函数/分析函数最全版(强烈建议收藏)

   日期:2024-12-27    作者:hubinusb 浏览:70    移动:http://w.yusign.com/mobile/quote/6995.html

本文基于impala3.2版本,所有的内置开窗分析函数

一、补充概念说明
1、什么是开窗函数

开窗函数是为行定义一个窗口(一个窗口里面是需要操作的行的集合,然后对窗口的行的组合值进行操作,不需要使用group by进行分区,能够在一行里面返回基础行的列和聚合列(简单来说就是结果多出一列聚合值,函数里面带有over

2、开窗函数的分类

一般分为“排名开窗函数” 和 “聚合开窗函数”

3、本章节中使用的表格数据如下:表名 student_score
stuidcoursescore1003语文651002语文791001英语791004英语871001语文811002英语871004语文971003英语65
二、排名开窗函数
1、排名开窗函数的使用语法

Function(args,…argn) OVER(【PARTITION BY <…>】【ORDER BY <…>】【<window_clause>】

可以单独使用order by ,也可以和partition by 一起使用;window_clause是指窗口的范围

2、排名开窗函数(排名函数
序号函数名称使用说明1rank)over)分组排序生成排名(重复的话序号一样,然后跳过重复的序号)2row_number)over)分组排序生成排名(不区分重复)3dense_rank)over)分组排序生成排名(重复的话序号一样,然后顺排

示例如下

 
3、排名开窗函数(切片函数
序号函数名称使用说明1ntile)over)分组内将数据切片

示例如下

 
4、排名开窗函数(序列分析函数
序号函数名称使用说明1cume_dist)over)小于等于当前行值的行数/总行数2percent_rank)over)(当前rank值-1) / (总行数-1)

示例如下

 
5、排名开窗函数(lead+lag
序号函数名称使用说明1lead(col,n,default)over)用于统计窗口内往下第n行值2lag(col,n,default)over)用于统计窗口内往上第n行值

示例如下

第一个参数是列名,第二个参数是指往上/下第n行(可选,默认为1,第三个参数为默认值(往上往下为null的时候取默认值,否则取null

 
6、排名开窗函数(first_value+last_value
序号函数名称使用说明1first_value(col)over)获取统计窗口内排名第一的列值2last_value(col)over)获取统计窗口内排名最后的列值

示例如下

last_value默认的窗口范围是:rows between unbounded preceding and current row(当前行数据与当前行之前的数据的比较

所以如果要去当前行与整个分组的数据比较需要加上:rows between unbounded preceding and unbounded following

 
三、聚合开窗函数
1、聚合开窗函数的使用语法

Function(args,…argn) OVER(【PARTITION BY <…>】【ORDER BY <…>】【<window_clause>】

聚合开窗函数能使用partition by ; order by 一般配合window_clause(指窗口的范围)一起使用

2、聚合开窗函数
序号函数名称使用说明1count(sal) over )获取统计窗口内的指定列的数据量2max(sal) over )获取统计窗口内的指定列的最大值3min(sal) over )获取统计窗口内的指定列的最小值4avg(sal) over )获取统计窗口内的指定列的平均值5sum(sal) over )获取统计窗口内的指定列的和

示例如下

本文地址:http://w.yusign.com/quote/6995.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号