美文网首页玩转大数据大数据
数据分析之hive开窗函数(一)

数据分析之hive开窗函数(一)

作者: 坨坨的大数据 | 来源:发表于2021-12-17 09:34 被阅读0次

温馨提示 : 本文非小白科普文

开窗函数简介

MYSQL 暂时还未对开窗函数给予支持。

测试数据

图片

01、count 开窗函数

select username,product,user_type,price,

以符合条件的所有行作为窗口
count(price) over() as count1,

以按user_type分组的所有行作为窗口
count(price) over(partition by user_type)as count2,

以按user_type分组、按price排序的所有行作为窗口
count(price) over(partition by user_type order by price) as count3,

以按user_type分组、按price排序、按当前行+往前1行+往后2行的行作为窗口
count(price) over(partition by user_type order by price rows between 1 preceding and 2 following) as count4

from test;

图片

02、sum 开窗函数

select username,product,user_type,price,

以符合条件的所有行作为窗口
sum(price) over() as sum1,

以按user_type分组的所有行作为窗口
sum(price) over(partition by user_type) as sum2,

以按user_type分组、按price排序后、按到当前行(含当前行)的所有行作为窗口
sum(price) over(partition by user_type order by price) as sum3,

以按user_type分组、按price排序后、按当前行+往前1行+往后2行的行作为窗口
sum(price) over(partition by user_type order by price rows between 1 preceding and 2 following) as sum4

from test;


图片

03、min 开窗函数

select username,product,user_type,price,

以符合条件的所有行作为窗口
min(price) over() as min1,

以按classId分组的所有行作为窗口
min(price) over(partition by classId) as min2,

以按classId分组、按price排序后、按到当前行(含当前行)的所有行作为窗口
min(price) over(partition by classId order by price) as min3,

以按classId分组、按price排序后、按当前行+往前1行+往后2行的行作为窗口
min(price) over(partition by classId order by price rows between 1 preceding and 2 following) as min4

from test;

图片

04、max 开窗函数

select username,product,user_type,price,

以符合条件的所有行作为窗口
max(price) over() as max1,

以按classId分组的所有行作为窗口
max(price) over(partition by classId) as max2,

以按classId分组、按price排序后、按到当前行(含当前行)的所有行作为窗口
max(price) over(partition by classId order by price) as max3,

以按classId分组、按price排序后、按当前行+往前1行+往后2行的行作为窗口
max(price) over(partition by classId order by price rows between 1 preceding and 2 following) as max4

from test;


图片

05、avg 开窗函数

select username,product,user_type,price,

以符合条件的所有行作为窗口
avg(price) over() as avg1,

以按classId分组的所有行作为窗口
avg(price) over(partition by classId) as avg2,

以按classId分组、按price排序后、按到当前行(含当前行)的所有行作为窗口
avg(price) over(partition by classId order by price) as avg3,

以按classId分组、按price排序后、按当前行+往前1行+往后2行的行作为窗口
avg(price) over(partition by classId order by price rows between 1 preceding and 2 following) as avg4

from test;


图片

相关函数总结

  • over():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化
  • preceding n:往前n行数据
  • following n:往后n行数据
  • current row:当前行
  • unbounded :无界限(起点或终点)
  • unbounded preceding:表示从前面的起点
  • unbounded following:表示到后面的终点

注意:
如果不指定ROWS BETWEEN , 默认为从起点到当前行;

相关文章

  • 数据分析之hive开窗函数(一)

    温馨提示 : 本文非小白科普文 开窗函数简介 MYSQL 暂时还未对开窗函数给予支持。 测试数据 01、count...

  • 数据分析之hive开窗函数(二)

    FIRST_VALUE:取分组内排序后,截止到当前行,第一个值。LAST_VALUE:取分组内排序后,截止到当前行...

  • Hive的条件函数与日期函数全面汇总解析

    在Hive的开窗函数实战的文章中,主要介绍了Hive的分析函数的基本使用。本文是这篇文章的延续,涵盖了Hive所有...

  • Oracle分析函数——函数列表

    聚合函数 开窗函数 数据分析函数 统计求和函数

  • Hive SQL 分析函数

    本文首发于:大数据每日哔哔-Hive 分析函数 Hive 分析函数 应用场景 (1)用于分区排序 (2)Top N...

  • HiveQL之Hive开窗函数

    题目:有销售表T。样例数据如下,请用sql查出每个员工的年累计销售额,查询结果如表L。 样例表T: Name(姓名...

  • Hive开窗函数

    1. 介绍 普通聚合函数聚合的行集是组,开窗函数聚合的行集是窗口。因此,普通聚合函数每组(Group by)只有一...

  • Hive开窗函数

    一、应用场景: 用于分区排序 动态Group By top N 累计计算 二、函数介绍 1、窗口函数: first...

  • Hive开窗函数

    1. 介绍 普通聚合函数聚合的行集是组,开窗函数聚合的行集是窗口。因此,普通聚合函数每组(Group by)只有一...

  • clickhouse开窗函数-全解

    clickhouse支持开窗函数后更香了 文章推荐 clickhouse数据模型之留存分析[https://www...

网友评论

    本文标题:数据分析之hive开窗函数(一)

    本文链接:https://www.haomeiwen.com/subject/kidvfrtx.html