hive窗口函数/分析函数 在sql中有一类函数叫做聚合函数,例如sum().avg().max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的.但是有时我们想要既显示聚集前的数据,又要显示聚集后的数据,这时我们便引入了窗口函数.窗口函数又叫OLAP函数/分析函数,窗口函数兼具分组和排序功能. 窗口函数最重要的关键字是 partition by 和 order by. 具体语法如下:over (partition by xxx order by xx
语法: 分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置) 常用分析函数: 聚合类 avg().sum().max().min() 排名类 row_number() 按照值排序时产生一个自增编号,不会重复 rank() 按照值排序时产生一个自增编号,值相等时会重复,会产生空位 dense_rank() 按照值排序时产生一个自增编号,值相等时会重复,不会产生空位 其他类 lag(列名,往前的行数,[行数为null时的默
语法: 分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置) 常用分析函数: 聚合类 avg().sum().max().min() 排名类 row_number() 按照值排序时产生一个自增编号,不会重复 rank() 按照值排序时产生一个自增编号,值相等时会重复,会产生空位 dense_rank() 按照值排序时产生一个自增编号,值相等时会重复,不会产生空位 其他类 lag(列名,往前的行数,[行数为null时的默
lead函数用于提取当前行前某行的数据 lag函数用于提取当前行后某行的数据 语法如下: lead(expression,offset,default) over(partition by ... order by ...) lag(expression,offset,default) over(partition by ... order by ... ) 例如提取前一周和后一周的数据,如下: select year,week,sale, lead(sale,1,NULL) over(--前一