Hive基础知识之顾客访问店铺数据分析(UV、Top3)
已知顾客访问店铺的访问日志
user_id | shop |
---|---|
u1 | a |
u2 | b |
u1 | b |
u1 | a |
u3 | c |
u4 | b |
u1 | a |
u2 | c |
u5 | b |
u4 | b |
u6 | c |
u2 | c |
u1 | b |
u2 | a |
u2 | a |
u3 | a |
u5 | a |
u5 | a |
u5 | a |
建表、导表
create table visit(user_id string,shop string) row format delimited fields terminated by '\t';
load data local inpath '/data/visit.dat' into table visit;
求每个店铺的UV(访客数)
select shop , count(distinct user_id) as uv from visit group by shop;
shop | UV |
---|---|
shop | uv |
a | 4 |
b | 4 |
c | 3 |
求每个店铺访问次数top3的访客信息。输出店铺名称、访客id、访问次数
1.先求出每个店铺,每个访客的访问次数
select shop, user_id, count(*) as ct from visit group by shop, user_id;
shop | user_id | ct |
---|---|---|
a | u1 | 3 |
b | u1 | 2 |
a | u2 | 2 |
b | u2 | 1 |
c | u2 | 2 |
a | u3 | 1 |
c | u3 | 1 |
b | u4 | 2 |
a | u5 | 3 |
b | u5 | 1 |
c | u6 | 1 |
2.计算每个店铺被用户访问次数排名
select shop,user_id,ct,rank() over(partition by shop order by ct) rk
from (select shop, user_id, count(*) as ct from visit group by shop, user_id) as t1;
shop | user_id | ct | rk |
---|---|---|---|
a | u3 | 1 | 1 |
a | u2 | 2 | 2 |
a | u5 | 3 | 3 |
a | u1 | 3 | 3 |
b | u5 | 1 | 1 |
b | u2 | 1 | 1 |
b | u4 | 2 | 3 |
b | u1 | 2 | 3 |
c | u6 | 1 | 1 |
c | u3 | 1 | 1 |
c | u2 | 2 | 3 |
3.取每个店铺的前三名
select shop, user_id, ct from
(select shop,user_id,ct,rank() over(partition by shop order by ct) rk
from (select shop, user_id, count(*) as ct from visit group by shop, user_id) as t1) as t2 where rk <= 3;
shop | user_id | ct |
---|---|---|
a | u3 | 1 |
a | u2 | 2 |
a | u1 | 3 |
a | u5 | 3 |
b | u2 | 1 |
b | u5 | 1 |
b | u1 | 2 |
b | u4 | 2 |
c | u3 | 1 |
c | u6 | 1 |
c | u2 | 2 |
The End
1 声望
0 粉丝
推荐阅读
大数据 + VR 全景技术重塑“二手车买车场景”
行内人都知道,二手车交易的核心问题在于车况信息不透明。中国二手车交易市场制度尚不完善,长期以来缺少行业公认的车辆估值标准和车况检测标准,二手车商提供的估值和车况信息不够透明。这导致用户和车商交易双...
之家技术赞 13阅读 12k
Mybatis源码解析之执行SQL语句
通过调用 session.getMapper (AccountMapper.class) 所得到的 AccountMapper 是一个动态代理对象,所以执行 accountMapper.selectByPrimaryKey (1) 方法前,都会被 invoke () 拦截,先执行 invoke () 中的逻辑。
京东云开发者赞 3阅读 789评论 1
Flink Forward Asia 2022 主论坛概览
2022 年 11 月 26-27 日,Flink Forward Asia(FFA)峰会成功举行。Flink Forward Asia 是由 Apache 软件基金会官方授权、由阿里云承办的技术峰会,是目前国内最大的 Apache 顶级项目会议之一,也是 Flink 开发者...
MissD阅读 6.1k
第十六届中国大数据技术大会五大分论坛顺利举办!
1 月 8 日下午,由苏州市人民政府指导、中国计算机学会主办、苏州市吴江区人民政府支持,CCF 大数据专家委员会、苏州市吴江区工信局、吴江区东太湖度假区管委会、苏州市吴江区科技局、苏州大学未来科学与工程学院...
MissD阅读 5.7k
企业流程数字化转型研讨会暨《流程优化风暴》新书发布会 即将召开
伴随数字经济的来临,数字化转型已成为社会经济发展的主旋律,国内众多企业将其作为战略核心并深入推进。在数字化转型工作逐渐进入细分领域的过程中,作为企业业务实施的基础支撑,企业业务流程已成为数字化转型...
MissD阅读 4.8k
高效数据运营赋能数字化转型研讨会暨《DataOps 实践手册》新书发布会 预约通道开启!
隆重预告高效数据运营赋能数字化转型研讨会暨《DataOps 实践手册》新书发布会 主办单位:机械工业出版社举办时间:2023 年 1 月 10 日 8:30-12:00会议背景随着数据呈指数级增长,机器学习(ML)和人工智能(AI)...
MissD阅读 3.6k
Mysql 数据库的批量插入或更新(Upsert)
这个问题已经困扰我一段时间了,对于大量数据的插入或更新,批量操作肯定比每条记录调用一次快得多,新数据可以用 insert 批量插入,老数据可以用 replace into 批量更新。但如果不知道数据是否存在(是否有唯一k...
songofhawk赞 2阅读 1.6k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。