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 窗口函数和分析函数** 第一篇,试试水: 一.介绍 分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行. 开窗函数指定了分析 ...
最新文章
- 运维监控系统——Zabbix简介
- python安装步骤图解-Python安装与卸载流程详细步骤(图解)
- 解决 Let’s Encrypt SSL 证书配置错误
- c++ websocket客户端_阿里面经WebSocket实时通信
- 将C#中DateTime类型转化为JavaScript中的Date类型
- 气体管道管径及流量对照表_气体涡轮流量计的选型要点?
- 类似新浪微博和google图片的HTML5实现图片拖拽上传功能
- 分析setting源代码获取sd卡大小
- 开放接口的安全验证方案(AES+RSA)
- PDFlib TET Crack,文本提取工具包
- MongoDB(芒果数据库)学习(一)———增删改查
- mysql 分区原理_mysql 原理~ 分区表
- 解决Chrome插件安装时报错:“Manifest file is missing or unreadable“
- C语言链表的删除代码实现
- 计算机网络-数据链路层 1
- 软件压缩卡与硬件压缩卡的比较
- 机房收费管理之数据源配置
- HIVE Parquet格式+snappy压缩及ORC格式+snappy压缩文件的方式
- 【小技巧】2345——劫持Edge浏览器主页,它它它.....它又回来了
- 2017 未来科学大奖揭晓:施一公、潘建伟、许晨阳获奖