原始数据(店铺名称, 销售时间, 销售金额)

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窗口函数练习题(连续三天以上有销售记录的店铺)相关推荐

  1. hive窗口函数练习题

    一.第一套练习 需求: 1.求用户明细并统计每天的用户总数 2.计算从第一天到现在的所有 score 大于80分的用户总数 3.计算每个用户到当前日期分数大于80的天数 test_window.txt ...

  2. 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 ...

  3. HiveQL学习笔记(四):Hive窗口函数

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  4. hive窗口函数使用

    hive窗口函数的使用 前言 一.hive窗口函数语法 1.over()窗口函数的语法结构 1.1.over()函数中的三个函数讲解 2.常与over()一起使用的分析函数 2.1.聚合类 2.2.排 ...

  5. Hive窗口函数小结

    文章目录 一.窗口函数作用 1.1.测试数据 1.2.应用场景 二.窗口函数概念 2.1.语法结构 2.2.分析函数 2.3.over函数的参数 三.窗口函数入门 3.1.over(partition ...

  6. hive 窗口函数(持续更新)

    hive窗口函数语法 avg().sum().max().min()等是分析函数,而over()才是窗口函数,下面我们来看看over()窗口函数的语法结构.及常与over()一起使用的分析函数: 1. ...

  7. Shell 练习题(三)

    Shell 练习题(三) 1.软链接和硬链接有什么区别 2.判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下 3.对文件test.txt找出行尾结束为小数点的行,并统计行数 4.写一个 ...

  8. 【指标计算】Spark 统计连续三天下单且下单额保持增长的用户

    文章目录 需求说明 数据集 需求分析 需求实现 -- Spark SQL API 需求实现 -- Spark SQL 需求说明 统计连续三天下单且下单金额保持增长(第一天 < 第二天 < ...

  9. HIVE 窗口函数和分析函数

    **HIVE 窗口函数和分析函数** 第一篇,试试水: 一.介绍 分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行. 开窗函数指定了分析 ...

最新文章

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

热门文章

  1. Redis之单线程+多路IO复用技术
  2. 汉诺塔递归的空间复杂度_【干货】Java算法复杂度
  3. 关于JS合并两个数组的方法
  4. zigbee与其它近距离无线通信技术的比较
  5. Golang 基础知识(九.func函数)
  6. 科普:探地雷达发展历史、天线分类,结构组成和工作原理
  7. php重定向函数是什么,php重定向三方法
  8. C++子类继承父类时如何写构造函数
  9. (转)经济观察网:学历不重要 但唐骏的学历很重要
  10. 使用html5 video标签不自动播放视频问题(静音播放)