IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 大数据之hive窗口函数基础查询 -> 正文阅读

[大数据]大数据之hive窗口函数基础查询

/电商项目高价值用户排名
温馨提示:本次任务使用的数据在电商项目云实验平台中,数据库 kkb_da
先使用 desc 表名;语句查看字段,在进行查询。
1.查询 2020 年 GMV,按照月累计进行分析(使用 kkb_order 表)
2.计算 2020 年 6 月份,每三天进行移动求平均注册用户数(使用 kkb_order 表)
3.计算 2020 年 6 月份注册用户数排名前 3 名的城市(使用 kkb_order 表)
/

– 1.查询 2020 年 GMV,按照月累计进行分析(使用 kkb_order 表)GMV(Gross Merchandise Volume商品交易总额
/*
1.商品交易总额为已完成订单的实际总额
2.所以限定条件为2020年和订单完成或退款完成
3.按月份和每月的销售总额进行分段,在用sum窗口函数进行统计
*/
select a.mon,a.gmv,
sum(a.gmv) over(order by a.mon)as re
from
(select month(to_date(order_date))as mon,
sum(case when order_status='订单完成’or order_status=‘退款完成’ then succ_amount end)as gmv
from kkb_order
where order_status in(‘订单完成’,‘退款完成’) and year(to_date(order_date))=‘2020’
group by month(to_date(order_date)))a;

– 2.计算 2020 年 6 月份,每三天进行移动求平均注册用户数(使用 kkb_user 表)
/*
hive中的时间戳转日期的函数为:
from_unixtime(BIGINT unixtime,STRING format)首先这里我要说一下,这里的unixtime的输入单位十秒,也就是十位的BIGINT。
但是呢,在我们实际中用的时间戳一般都是十三位的时间戳,精确到毫秒了,如果将精确到毫秒的时间戳输入方法中会有错误,出现错误的日期。
解决办法:如果是13位的时间戳,可使用下面的方法from_unixtime(cast(timestamp/1000 as bigint)) as time
注意:timestamp/1000 是一个double的数值类型,所以直接使用cast函数变成bigint就可以了
*/
– 第三步 按时间进行分段,将用户注册数和用户注册平均数查询出来
select
b.event_day,
b.user,
avg(b.user)over(order by b.event_day rows between 2 preceding and current row )as re
from
(select
– 第二步 按时间进行分段,计算用户注册数
a.event_day,
count(distinct a.user_id)as user
from(
– 第一步 先将时间戳转换为日期格式,提取六月份时间
select
from_unixtime(cast(createtime/1000 as bigint),‘yyyy-MM-dd’) as event_day,
user_id
from kkb_user
where from_unixtime(cast(createtime/1000 as bigint),‘yyyy-MM-dd’) between ‘2020-06-01’and’2020-06-30’
)as a
where a.event_day between ‘2020-06-01’ and ‘2020-06-30’
group by a.event_day
)as b;

– 3.计算 2020 年 6 月份注册用户数排名前 3 名的城市(使用 kkb_user和kkb_province_city表)
– 1.先将2020年6分的城市和kkb_province_city进行内连接
– 2.然后统计用户数(去重)
– 3.再将统计的用户数进行排名 只取前三名

select
c.city,
c.tot_user,
c.dr
from
(select b.city,
count(distinct a.user_id)as tot_user,
dense_rank() over(order by count(distinct a.user_id) desc)as dr
from
(select from_unixtime(cast(createtime/1000 as bigint),‘yyyy-MM-dd’)as event_day,
user_id,
city_id
from kkb_user
where from_unixtime(cast(createtime/1000 as bigint),‘yyyy-MM-dd’)between ‘2020-06-01’and’2020-06-30’
)a inner join(
select city_id,city
from kkb_province_city) b on a.city_id=b.city_id
group by b.city)c
where c.dr in (1,2,3);

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 12:07:06  更:2021-08-13 12:12:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 8:50:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码