Hive(四)窗口函数应用大全

什么是窗口函数?
在sql中有一类函数叫做聚合函数,例如sum()、avg()、max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的.但是有时我们想要既显示聚集前的数据,又要显示聚集后的数据,这时我们便引入了窗口函数.
作用
窗口函数是一组特殊函数
■扫描多个输入行来计算每个输出值,为每行数据生成一行结果
■可以通过窗口函数来实现复杂的计算和聚合
hive中的窗口函数和sql中的窗口函数相类似,都是用来做一些数据分析类的工作,一般用于olap分析(在线分析处理)。
语法
select 列名 over(partition by 列名 order by 列名) from 表;
说明
■PARTITION BY类似于GROUP BY,未指定则按整个结果集
■只有指定ORDER BY子句之后才能进行窗口定义
■可同时使用多个窗口函数
■过滤窗口函数计算结果必须在外面一层
■在SQL处理中,窗口函数都是最后一步执行,而且仅位于Order by字句之前。

窗口函数设定关键字 OVER
1.聚合函数+over 设定窗口
假如说我们想要查询名字叫李四出现总次数,我们便可以使用窗口函数去去实现
select name,count() as consum over() from test1 where name=‘lisi’;
执行过程
先执行from后面where判断筛选后 在设定窗口函数,把数据放到窗口函数里都显示,会有多行数据,不管重不重复,在去计算聚合函数count(),得到的最后结果去匹配分给每行,但是得到的结果不一定是每行中每个数据需要的结果

其实mart出现了4次,jack出现了1次.事实上,大多数情况下,我们是只看去重后的结果的.针对于这种情况,我们有两种实现方式
1.distinct(去重复)
select distinct name,count(
) as consum over() from test1 where name=‘lisi’;
2.group by(分组)
select name,count(*) as consum over() from test1 where name=‘lisi’ group by name;
结果:

这时要想把不同的名字放到不同的窗口单独计算ÿ

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值