脸上长痣是什么原因造成的| 皮肤过敏用什么药| 头发汗多是什么原因| 玉露茶属于什么茶| 脓毒血症是什么病| 老妈子是什么意思| 肛门上长了个肉疙瘩是什么原因| 什么门不能开| tips什么意思| 立是什么结构的字| 正常人突然抽搐是什么原因| ab血型和o型生的孩子是什么血型| 整改是什么意思| 霜降出什么生肖| 肾气不足吃什么中成药| 六九年属什么| 一对什么填空| 宝宝消化不良吃什么| 良性反应性改变是什么意思| 汉堡是什么意思| 大便不成形吃什么药| 什么肠小道成语| 奥康属于什么档次| 挖坑是什么意思| 生长激素分泌的高峰期是什么时候| 梦到生儿子有什么预兆| 月亮杯是什么东西| 红色加蓝色等于什么颜色| 女人梦见桃子预示什么| 手脱皮用什么药膏最好| 国字五行属什么| 啐了一口是什么意思| 1月10日什么星座| 美林是什么药| 太平天国失败的根本原因是什么| 2.4号是什么星座| mj是什么意思| 688是什么意思| 白带什么颜色| 小孩用脚尖走路是什么原因| 肾虚挂什么科| 说话口臭是什么原因引起的| 中药为什么要熬两次| 白玉菩提是什么材质| 高中什么时候分文理科| 孕妇便秘吃什么药| 什么头什么尾| 高血压适合吃什么食物| 阴吹是什么意思| 豆腐有什么营养| 减肥早上吃什么比较好| 头晕眼花吃什么药| 什么叫继发性高血压| 指甲有横纹是什么原因| 人各有命是什么意思| 头上长痣代表什么| 埋汰是什么意思| 八月二号是什么星座| 宝宝咳嗽挂什么科| c是什么牌子| 戍怎么读音是什么| 外地车进北京有什么限制| 老克勒是什么意思| 世界上最高的山是什么山| 手臂突然疼痛什么原因| 孕妇肠胃炎能吃什么药| 吃什么食物降尿酸最快| 五红汤什么时候喝最好| 尿道炎和阴道炎有什么区别| 黄色裤子配什么上衣| 为什么会突然不爱了| 媞是什么意思| 为什么偏偏喜欢你| 火龙果有什么营养| 盆腔炎吃什么药最好| 嗷呜是什么意思| 古代上元节是什么节日| 什么是多巴胺| 有代沟是什么意思| 托孤是什么意思| 师范类是什么意思| faye是什么意思| 南昌有什么好吃的| 什么叫辟谷减肥法| 肺部有阴影一般是什么病| 大本营是什么意思| 快的反义词是什么| 胆小如鼠是什么生肖| 手链断了是什么预兆| 心跳加快是什么病| 为什么吹空调会咳嗽| 男马配什么属相最好| 老实是什么意思| 女生为什么会叫| 三个龙念什么| 寿眉属于什么茶| 陆陆续续是什么意思| 急性结膜炎用什么眼药水| 垂体瘤是什么病| peter是什么意思| 大腿青筋明显是什么原因| 什么样的白带是怀孕了| 出其不意下一句是什么| 口干舌燥吃什么中成药| 中国的国果是什么| 呼吸胸口疼是什么原因| 翼字五行属什么| 孩子咬手指甲是什么原因| 什么东东是什么意思| 蚕豆病不能吃什么| 林心如什么学历| 感冒引起的咳嗽吃什么药| 梦见自己掉头发是什么意思| 头颅mri是什么检查| 月青念什么| 做梦被打了是什么意思| 梦见捡菌子是什么预兆| 什么白| 大便干吃什么药| 奉子成婚是什么意思| 月经推迟一个月不来什么原因| 为什么腋下有异味| 撇清关系是什么意思| 踏板摩托车什么牌子好| 上厕所出血是什么原因| 外阴灼热用什么药| 血压正常心跳快是什么原因| 每天放很多屁是什么原因| 30岁以上适合用什么牌子的护肤品| 打胎药叫什么| 4月份什么星座| 蚊子怕什么气味| 后背痒是什么原因| 邹字五行属什么| cindy什么意思| 钥字五行属什么| 左胳膊发麻是什么原因| 比细菌还小的东西是什么| 黄鼠狼为什么叫黄大仙| 八十岁是什么寿| 佛口蛇心是什么生肖| 辩证什么意思| 1973年属牛是什么命| 眼线是什么意思| 襄是什么意思| 羊水栓塞是什么原因引起的| 苦尽甘来是什么意思| 苯磺酸氨氯地平片什么时候吃最好| 弃市是什么意思| 治未病科是看什么病的| 牙龈疼吃什么药| 血糖突然升高是什么原因| 鬼迷心窍是什么生肖| 脚背浮肿是什么原因引起的| 打完狂犬疫苗有什么不良反应| 大娘的老公叫什么| 我操是什么意思| 吃什么可以化掉息肉| 5月29日什么星座| 唵嘛呢叭咪吽什么意思| 什么清什么白| 春晓描写的是什么季节| 补铁的水果有什么| 毛主席为什么不进故宫| 小孩子流鼻血是什么原因引起的| 建档立卡是什么| 为什么会有高血压| 空调健康模式是什么意思| 少阳证是什么意思| 冷喷机喷脸有什么好处| 为什么发际线高| 百褶裙搭配什么上衣| 类风湿关节炎不能吃什么食物| 血栓吃什么药| 藏红花泡水喝有什么功效和作用| 奴才是什么意思| 恚是什么意思| 什么叫社保| 1977年属什么生肖| 吃秋葵有什么好处| 眼眶周围发黑什么原因| 腹泻肚子疼吃什么药| 炖牛肉放什么调料| 沱茶属于什么茶| 两点是什么时辰| 干眼症缺乏什么维生素| 骨皮质是什么| 风格是什么意思| 石斛与什么搭配最好| 乳腺结节应该挂什么科| 痢疾是什么| 说一个人轴是什么意思| 老子叫什么名字| 八月出生的是什么星座| 结甲可能是什么意思| eau是什么意思| 为什么伤口愈合会痒| 绿色加红色是什么颜色| 左侧卵巢囊性包块是什么意思| 右脸长痘是什么原因| 乌龟肺炎用什么药| 乌龟能吃什么水果| 孕妇血糖高对胎儿有什么影响| 胃酸吃什么能缓解| 4.5是什么星座| 医学生规培是什么意思| 支原体感染吃什么食物好| 出冷汗是什么原因| 服化道什么意思| 日央读什么| 电气火灾用什么灭火| 淋巴结是什么东西| 窦道是什么意思| 尪痹是什么意思| 蛞蝓是什么| 大姨妈量少什么原因| 下一年是什么生肖| hpv是什么病严重吗| 什么是公历年份| nuxe是什么牌子| af是什么意思| 种马文是什么意思| ck香水属于什么档次| 岁月如歌是什么意思| 蓝色属于什么五行属性| 小孩口腔溃疡吃什么药| 规培结束后是什么医生| 芯字五行属什么| 吃什么排毒最快| 尿出红色的尿是什么原因| 什么病必须戒酒| 肾结石吃什么好| 土土念什么| b型和ab型生的孩子是什么血型| 欣什么若什么| 种植牙有什么危害| 金银花和什么搭配喝好| 不动明王是什么属相的本命佛| 星月菩提是什么材质| 看见双彩虹有什么征兆| 淋巴滤泡增生是什么意思| 属马的跟什么属相最配| 什么样的人不能吃海参| 大学团委书记什么级别| h1是什么意思| 心计是什么意思| 精油是干什么用的| 小孩肠系膜淋巴结炎吃什么药| rh血型是什么血型| 左肾结晶是什么意思| 鼻梁有横纹是什么原因| 什么高| 日午念什么| 白癜风用什么药| 谷草转氨酶是指什么| 52年属什么| 梦见很多蜜蜂是什么意思| 梦见烧火做饭是什么意思| 橙子是什么季节的水果| 偏头疼是什么症状| 1207是什么星座| 外阴白斑挂什么科| 过生日吃什么| 手麻胳膊麻是什么原因引起的| 百度

石煤机职工加班组装产品 确保按期发往煤矿用户

本文介绍窗口聚合函数的基本概念及应用场景,包括SUM、AVG、COUNT等函数如何在不同窗口设置下进行数据聚合运算,如累计求和、指定区间求和等,并通过具体实例展示其在数据处理中的应用。
百度 传说是历史知识的源泉,唯物史观也承认伟大人物在历史发展中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

窗口聚合函数:SUM、AVG、COUNT、MAX、MIN

以SUM为例

总结

  • 1.如果不使用 over(),窗口大小是针对查询产生的所有数据
  • 功能:用于实现数据分区后的聚合
  • 语法:fun_name(col1) over (partition by col2 order by col3)
  • 示例:实现分区内的累加,其他的原理类似
  • 不指定窗口时,不排序默认第一行到最后一行,排序默认第一行到当前行
  • 指定窗口时 --rows between 起始位置 and 结束位置
    • N preceding:往前多少行
    • N following:往后多少行
    • current row:当前行
    • unbounded:起点或者终点,没有边界
    • unbounded preceding 表示从前面的起点
    • unbounded following:表示到后面的终点
  • 注意
    • 分组列表,组内按排列顺序求累加和, 每组的相同level(排序字段)分享同一累加值。
    • 如果level(排序字段)有相同,需要注意是否是你想要的结果,是否需要考虑指定窗口位置

实现分区内起始到当前行的pv累加,指定排序默认窗口:取分区第一行开始到当前行的和

--创建文件:vim /export/datas/window.txt
cookie1,2018-04-10,1
cookie1,2018-04-11,5
cookie1,2018-04-12,7
cookie1,2018-04-13,3
cookie2,2018-04-13,3
cookie2,2018-04-14,2
cookie2,2018-04-15,4
cookie1,2018-04-14,2
cookie1,2018-04-15,4
cookie1,2018-04-16,4
cookie2,2018-04-10,1
cookie2,2018-04-11,5
cookie2,2018-04-12,7
--创建表
create database db_function;
use db_function;
create table hanjiaxiaozhi_f1(
cookieid string,
daystr string,
pv int
) row format delimited fields terminated by ',';
--加载数据
load data local inpath '/export/datas/window.txt' into table hanjiaxiaozhi_f1;
set hive.exec.mode.local.auto=true;
--实现分区内起始到当前行的pv累加,默认窗口:取分区第一行开始到当前行的和
select 
  cookieid,
  daystr,
  pv,
  sum(pv) over(partition by cookieid order by daystr) as pv1 
from 
  hanjiaxiaozhi_f1;
  
+-----------+-------------+-----+------+--+
| cookieid  |   daystr    | pv  | pv3  |
+-----------+-------------+-----+------+--+
| cookie1   | 2018-04-10  | 1   | 1    |
| cookie1   | 2018-04-11  | 5   | 6    |
| cookie1   | 2018-04-12  | 7   | 13   |
| cookie1   | 2018-04-13  | 3   | 16   |
| cookie1   | 2018-04-14  | 2   | 18   |
| cookie1   | 2018-04-15  | 4   | 22   |
| cookie1   | 2018-04-16  | 4   | 26   |
| cookie2   | 2018-04-10  | 1   | 1    |
| cookie2   | 2018-04-11  | 5   | 6    |
| cookie2   | 2018-04-12  | 7   | 13   |
| cookie2   | 2018-04-13  | 3   | 16   |
| cookie2   | 2018-04-14  | 2   | 18   |
| cookie2   | 2018-04-15  | 4   | 22   |
+-----------+-------------+-----+------+--+

实现分区内起始到当前行的pv累加,指定排序默认窗口:取分区第一行开始到当前行的和,每组的相同level分享同一累加值。

select id,score,
sum(score) over(patition by id order by score) cumm_scores  
from GRADE

idscorecumm_scores
19898
1100198
295190
295190

实现分区内所有pv的累加,不指定排序默认窗口:从第一行到最后一行

select 
  cookieid,
  daystr,
  pv,
  sum(pv) over(partition by cookieid ) as pv2
from 
  hanjiaxiaozhi_f1;
  
+-----------+-------------+-----+------+--+
| cookieid  |   daystr    | pv  | pv2  |
+-----------+-------------+-----+------+--+
| cookie1   | 2018-04-16  | 4   | 26   |
| cookie1   | 2018-04-15  | 4   | 26   |
| cookie1   | 2018-04-13  | 3   | 26   |
| cookie1   | 2018-04-12  | 7   | 26   |
| cookie1   | 2018-04-11  | 5   | 26   |
| cookie1   | 2018-04-14  | 2   | 26   |
| cookie1   | 2018-04-10  | 1   | 26   |
| cookie2   | 2018-04-12  | 7   | 22   |
| cookie2   | 2018-04-11  | 5   | 22   |
| cookie2   | 2018-04-10  | 1   | 22   |
| cookie2   | 2018-04-14  | 2   | 22   |
| cookie2   | 2018-04-13  | 3   | 22   |
| cookie2   | 2018-04-15  | 4   | 22   |
+-----------+-------------+-----+------+--+
  

手动指定窗口的大小:分区

rows between 起始位置 and 结束位置
指定窗口的关键字:rows betweenand- N preceding:往前多少行
- N following:往后多少行
- current row:当前行
- unbounded:起点或者终点,没有边界
- unbounded preceding 表示从前面的起点
- unbounded following:表示到后面的终点
rows between unbounded preceding and current row
--实现分区内从第一行到当前行的pv累加
--手动指定窗口的大小:分区
rows between 起始位置 and 结束位置
rows between unbounded preceding and current row

实现分区内起始到当前行的pv累加,手动指定窗口大小从第一行到当前行

select 
  cookieid,
  daystr,
  pv,
  sum(pv) over(partition by cookieid order by daystr rows between unbounded preceding and current row) as pv3
from 
  hanjiaxiaozhi_f1;
  
  
+-----------+-------------+-----+------+--+
| cookieid  |   daystr    | pv  | pv3  |
+-----------+-------------+-----+------+--+
| cookie1   | 2018-04-10  | 1   | 1    |
| cookie1   | 2018-04-11  | 5   | 6    |
| cookie1   | 2018-04-12  | 7   | 13   |
| cookie1   | 2018-04-13  | 3   | 16   |
| cookie1   | 2018-04-14  | 2   | 18   |
| cookie1   | 2018-04-15  | 4   | 22   |
| cookie1   | 2018-04-16  | 4   | 26 
| cookie2   | 2018-04-10  | 1   | 1    |
| cookie2   | 2018-04-11  | 5   | 6    |
| cookie2   | 2018-04-12  | 7   | 13   |
| cookie2   | 2018-04-13  | 3   | 16   |
| cookie2   | 2018-04-14  | 2   | 18   |
| cookie2   | 2018-04-15  | 4   | 22   |
+-----------+-------------+-----+------+--+

实现分区内指定前N行到当前行的pv累加

select 
  cookieid,
  daystr,
  pv,
  sum(pv) over(partition by cookieid order by daystr rows between 3 preceding and current row) as pv4
from 
  hanjiaxiaozhi_f1;
  
+-----------+-------------+-----+------+--+
| cookieid  |   daystr    | pv  | pv4  |
+-----------+-------------+-----+------+--+
| cookie1   | 2018-04-10  | 1   | 1    |
| cookie1   | 2018-04-11  | 5   | 6    |
| cookie1   | 2018-04-12  | 7   | 13   |
| cookie1   | 2018-04-13  | 3   | 16   |
| cookie1   | 2018-04-14  | 2   | 17   |
| cookie1   | 2018-04-15  | 4   | 16   |
| cookie1   | 2018-04-16  | 4   | 13   |
| cookie2   | 2018-04-10  | 1   | 1    |
| cookie2   | 2018-04-11  | 5   | 6    |
| cookie2   | 2018-04-12  | 7   | 13   |
| cookie2   | 2018-04-13  | 3   | 16   |
| cookie2   | 2018-04-14  | 2   | 17   |
| cookie2   | 2018-04-15  | 4   | 16   |
+-----------+-------------+-----+------+--+

实现分区内指定前N行到后N行的pv累加

select 
  cookieid,
  daystr,
  pv,
  sum(pv) over(partition by cookieid order by daystr rows between 3 preceding and 1 following) as pv5
from 
  hanjiaxiaozhi_f1;
  
+-----------+-------------+-----+------+--+
| cookieid  |   daystr    | pv  | pv5  |
+-----------+-------------+-----+------+--+
| cookie1   | 2018-04-10  | 1   | 6    |
| cookie1   | 2018-04-11  | 5   | 13   |
| cookie1   | 2018-04-12  | 7   | 16   |
| cookie1   | 2018-04-13  | 3   | 18   |
| cookie1   | 2018-04-14  | 2   | 21   |
| cookie1   | 2018-04-15  | 4   | 20   |
| cookie1   | 2018-04-16  | 4   | 13   |
| cookie2   | 2018-04-10  | 1   | 6    |
| cookie2   | 2018-04-11  | 5   | 13   |
| cookie2   | 2018-04-12  | 7   | 16   |
| cookie2   | 2018-04-13  | 3   | 18   |
| cookie2   | 2018-04-14  | 2   | 21   |
| cookie2   | 2018-04-15  | 4   | 16   |
+-----------+-------------+-----+------+--+

实现分区内指定当前行到后N行的pv累加

select 
  cookieid,
  daystr,
  pv,
  sum(pv) over(partition by cookieid order by daystr rows between current row and unbounded following) as pv6
from 
  hanjiaxiaozhi_f1;
  
+-----------+-------------+-----+------+--+
| cookieid  |   daystr    | pv  | pv6  |
+-----------+-------------+-----+------+--+
| cookie1   | 2018-04-10  | 1   | 26   |
| cookie1   | 2018-04-11  | 5   | 25   |
| cookie1   | 2018-04-12  | 7   | 20   |
| cookie1   | 2018-04-13  | 3   | 13   |
| cookie1   | 2018-04-14  | 2   | 10   |
| cookie1   | 2018-04-15  | 4   | 8    |
| cookie1   | 2018-04-16  | 4   | 4    |
| cookie2   | 2018-04-10  | 1   | 22   |
| cookie2   | 2018-04-11  | 5   | 21   |
| cookie2   | 2018-04-12  | 7   | 16   |
| cookie2   | 2018-04-13  | 3   | 9    |
| cookie2   | 2018-04-14  | 2   | 6    |
| cookie2   | 2018-04-15  | 4   | 4    |
+-----------+-------------+-----+------+--+

注意:窗口函数不支持distinct

  • 会报错Error in query: Distinct window functions are not supported: 。。。。
  • 解决:size( collect_set(xxx)over( ) )
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
水为什么会结冰 hia是什么意思 动脉硬化挂什么科 尿酸高适合吃什么菜 脑利钠肽前体值高预示什么
检查视力挂什么科 什么是爬虫 藏拙是什么意思 司法鉴定是干什么的 肾挂什么科室
视力5.3是什么概念 后会有期什么意思 梧桐树叶像什么 grn什么颜色 吐奶严重是什么原因
一热就头疼是什么原因 酸中毒是什么意思 生二胎应该注意什么 过敏性皮炎用什么药 玉对人身体健康有什么好处
ky是什么意思wzqsfys.com 帽子戏法是什么意思hcv8jop3ns6r.cn 下半夜咳嗽是什么原因hcv8jop2ns5r.cn 做喉镜能检查出什么病hcv9jop0ns0r.cn 言谈举止是什么意思hcv8jop1ns2r.cn
抗核抗体弱阳性说明什么hcv9jop0ns9r.cn 什么时候收复台湾hcv8jop6ns8r.cn 小肚子左边疼是什么原因hcv8jop5ns3r.cn 外耳道湿疹用什么药zsyouku.com 学区房什么意思hcv9jop5ns5r.cn
夫妻相是什么意思hcv9jop3ns0r.cn 体重什么时候称最准确hcv9jop4ns9r.cn 肌红蛋白高是什么意思fenrenren.com 父亲ab型母亲o型孩子什么血型hcv9jop5ns7r.cn 蓝莓和什么不能一起吃hcv8jop1ns7r.cn
中指尖麻木是什么原因bjcbxg.com 嵌合体是什么意思hcv8jop5ns8r.cn 清华校长什么级别hcv9jop3ns1r.cn 鲫鱼不能和什么一起吃hcv9jop5ns0r.cn 什么叫辟谷hcv8jop3ns6r.cn
百度