Hive窗口函数练习题(连续三天以上有销售记录的店铺)
原始数据(店铺名称, 销售时间, 销售金额)
a,2020-02-05,200
a,2020-02-06,300
a,2020-02-07,200
a,2020-02-08,400
a,2020-02-10,600
a,2020-03-01,200
a,2020-03-02,300
a,2020-03-03,200
a,2020-03-04,400
a,2020-03-05,600
b,2020-02-05,200
b,2020-02-06,300
b,2020-02-08,200
b,2020-02-09,400
b,2020-02-10,600
c,2020-01-31,200
c,2020-02-01,300
c,2020-02-02,200
c,2020-02-03,400
c,2020-02-10,600
在hive中建表
create table shop(
name string ,
ctime string ,
money int
)
row format delimited fields terminated by "," ;
load data local inpath "/doit16/shop.txt" into table shop ;
需求: 查找连续三天又销售记录的店铺名称
分析:
1.将店铺按名称分区, 时间排序 ,并编号
select
* ,
row_number() over(partition by name order by ctime) as rn
from
shop
此时得到的表结果如下:
2.用ctime字段的值减去后面的编号,这里用date_sub()函数 会得到一个结果, 如果两条数据的结果相同, 则说明他们是连续的两天的购买数据
select
name,
ctime,
money,
rn,
date_sub(ctime,rn) date_sub_res
from
(select
* ,
row_number() over(partition by name order by ctime) as rn
from
shop) t
查询结果:
3.按照name, date_sub_res分组
select
name,
date_sub_res,
count(*) cc
from
(select
name,
ctime,
money,
rn,
date_sub(ctime,rn) date_sub_res
from
(select
* ,
row_number() over(partition by name order by ctime) as rn
from
shop) t1) t2
group by name,date_sub_res
查询结果:
4.筛选出cc > 3 的数据, 并对name去重, 所得结果就是连续3天就销售记录的店铺
select
distinct(name)
from
(select
name,
date_sub_res,
count(*) cc
from
(select
name,
ctime,
money,
rn,
date_sub(ctime,rn) date_sub_res
from
(select
* ,
row_number() over(partition by name order by ctime) as rn
from
shop) t1) t2
group by name,date_sub_res) t3
where cc > 3;
查询结果:
Hive窗口函数练习题(连续三天以上有销售记录的店铺)相关推荐
- hive窗口函数练习题
一.第一套练习 需求: 1.求用户明细并统计每天的用户总数 2.计算从第一天到现在的所有 score 大于80分的用户总数 3.计算每个用户到当前日期分数大于80的天数 test_window.txt ...
- Hive面试题系列1: 求连续三天购买指定需求
1.数据源 cat /home/root/order.txt 001 zs p001 2020-02-04 002 zs p005 2020-03-05 003 zs p006 2020-03-06 ...
- HiveQL学习笔记(四):Hive窗口函数
本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...
- hive窗口函数使用
hive窗口函数的使用 前言 一.hive窗口函数语法 1.over()窗口函数的语法结构 1.1.over()函数中的三个函数讲解 2.常与over()一起使用的分析函数 2.1.聚合类 2.2.排 ...
- Hive窗口函数小结
文章目录 一.窗口函数作用 1.1.测试数据 1.2.应用场景 二.窗口函数概念 2.1.语法结构 2.2.分析函数 2.3.over函数的参数 三.窗口函数入门 3.1.over(partition ...
- hive 窗口函数(持续更新)
hive窗口函数语法 avg().sum().max().min()等是分析函数,而over()才是窗口函数,下面我们来看看over()窗口函数的语法结构.及常与over()一起使用的分析函数: 1. ...
- Shell 练习题(三)
Shell 练习题(三) 1.软链接和硬链接有什么区别 2.判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下 3.对文件test.txt找出行尾结束为小数点的行,并统计行数 4.写一个 ...
- 【指标计算】Spark 统计连续三天下单且下单额保持增长的用户
文章目录 需求说明 数据集 需求分析 需求实现 -- Spark SQL API 需求实现 -- Spark SQL 需求说明 统计连续三天下单且下单金额保持增长(第一天 < 第二天 < ...
- HIVE 窗口函数和分析函数
**HIVE 窗口函数和分析函数** 第一篇,试试水: 一.介绍 分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行. 开窗函数指定了分析 ...
最新文章
- ffmpeg使用总结
- python中简述对象和类的关系_Python学习笔记(七)对象和类
- Linux系统调用的运行过程【转】
- 华清远见java考试题_Java面试题,你能答对几个?
- 【C/C++】值传递和址传递区别解析
- ?php echo $this_php如何使用echo输出常量+变量?
- [OpenGL] 斯坦福兔子与显示列表
- win10u盘被写保护怎么解除_Win10系统下U盘写保护应该如何破除!
- 提升幸福感的100件小事
- 七月阅读:《刘慈欣科幻短篇小说集Ⅰ》笔记
- Python+Kivy(App开发)从入门到实践
- java http 1.1_HTTP1.1翻译 - 彪悍的人生不需要解释 - BlogJava
- sql连表查询、子查询、组合查询
- ant notification通知框 内容支持html标签
- 必应壁纸php,PHP版Bing壁纸下载源码
- matlab ewt使用方法,ewt升学e网通怎么使用,ewt升学e网通使用解析
- 数字滚动(微信小程序)
- 【厚积薄发系列】C++项目总结8—全自动和半自动随机生成中文字符串
- 为什么我从Flutter转投Electron的怀抱?
- 精益思想—人、过程和技术的集成(zt)
热门文章
- openerp js调用Python类方法
- Python 高级编程
- 第三方支付业务处理流程
- android下提取PPS,SPS
- 原森态、慢生活 从柏厨集成家居北纬60°洞察现代青年的城市生活
- Nginx给minio分布式做负载均衡进入管理界面查看桶一直显示loading
- 小米8探索版android版本,小米 8 透明探索版,首款 Android Face ID 手機,支援螢幕下指紋辨識...
- linux忘记密码,如何修改密码
- oracle revoke 列_Oracle常见授权与回收权限——grant和revoke
- R语言使用epiDisplay包的tabpct函数生成二维列联表并使用马赛克图可视化列联表(二维列联表、边际频数、以及按行、按列的比例)、自定义设置cex.axis参数改变轴标签数值的大小