Hive分析函数的使用

Hive分析函数的使用


测试数据集:


SQL语句## COUNT、SUM、MIN、MAX、AVG

## COUNT、SUM、MIN、MAX、AVG

select user_id

      ,user_type

      ,sales

      ,sum(sales) OVER(partition by user_type order by sales asc) as sales_1 --默认为从起点到当前行

      ,sum(sales) OVER(partition by user_type order by sales asc ROWS between UNBOUNDED PRECEDING and current row) as sales_2 --从起点到当前行,结果与sales_1不同。

      ,sum(sales) OVER(partition by user_type order by sales asc ROWS between 3 PRECEDING and current row) as sales_3  --当前行+往前3行

      ,sum(sales) OVER(partition by user_type order by sales asc ROWS between 3 PRECEDING and 1 FOLLOWING) as sales_4 --当前行+往前3行+往后1行

      ,sum(sales) OVER(partition by user_type order by sales asc ROWS between current row and UNBOUNDED FOLLOWING) as sales_5 --当前行+往后所有行 

      ,sum(sales) OVER(partition by user_type) as sales_6 --分组内所有行

  from order_detail

order by user_type

        ,sales

        ,user_id;

SQL代码
运行结果

注意:

结果和ORDER BY相关,默认为升序

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

如果不指定ORDER BY,则将分组内所有值累加;

关键是理解ROWS BETWEEN含义,也叫做WINDOW子句:

PRECEDING:往前

FOLLOWING:往后

CURRENT ROW:当前行

UNBOUNDED:无界限(起点或终点)

UNBOUNDED PRECEDING:表示从前面的起点

UNBOUNDED FOLLOWING:表示到后面的终点

其他COUNT、AVG,MIN,MAX,和SUM用法一样。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,554评论 0 13
  • 这一周主要学习了 Hive 的一些基础知识,学习了多个 Hive 窗口函数,虽然感觉这些窗口函数没有实际的应用...
    大石兄阅读 2,826评论 2 8
  • 分析函数,也称为窗口函数,通常被认为仅对数据仓库SQL有用。使用分析函数的查询,基于对数据行的分组来计算总量值。与...
    猫猫_tomluo阅读 3,416评论 3 18
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,505评论 0 10
  • 2018年5月 香港 32℃ 晴 舍弃五一的漫漫长假,选择了一个周末的说走就走,我的港澳通行证签注不再被过期了,首...
    天使旅行箱6阅读 339评论 1 4