1.我们有如下的用户访问数据
userId visitDate visitCount
u01 2017/1/21 5
u02 2017/1/23 6
u03 2017/1/22 8
u04 2017/1/20 3
u01 2017/1/23 6
u01 2017/2/21 8
u02 2017/1/23 6
u01 2017/2/22 4
要求使用SQL统计出每个用户的累积访问次数,如下表所示:
用户id 月份 小计 累积
u01 2017-01 11 11
u01 2017-02 12 23
u02 2017-01 12 12
u03 2017-01 8 8
u04 2017-01 3 3

分析:
1.首先是将日期的格式转换成所需要的格式类型

select userId,date_format(regexp_replace(visitDate,'/','-'),'YYYY-MM') mn,visitCount;t1
2.统计出每个人单个月的访问量
select userId,mn,sum(visitCount) monCount from t1 group by userId,mn; t2
3.a按照月累计访问量
select userId,mn,monCount,sum(monCount) over(partition by userId order by mn) from t2;
4.最终sql
selectuserId,mn,mn_count,sum(mn_count) over(partition by userId order by mn)from (   selectuserId,mn,sum(visitCount) mn_countfrom(selectuserId,date_format(regexp_replace(visitDate,'/','-'),'yyyy-MM') mn,visitCountfromaction)t1group by userId,mn)t2;

2.有50W个店铺,每个顾客访客访问任何一个店铺的任何一个商品时都会产生一条访问日志,访问日志存储的表名为Visit
访客的用户id为user_id,被访问的店铺名称为shop,请统计:
u1 a
u2 b
u1 b
u1 a
u3 c
u4 b
u1 a
1)每个店铺的UV(访客数)

select shop ,count(distinct userId) from Visit group by shop

2)每个店铺访问次数top3的访客信息。输出店铺名称、访客id、访问次数
(1)查询每个店铺被每个用户访问次数

select shop,user_id,count(*) ct
from visit
group by shop,user_id;t1

(2)计算每个店铺被用户访问次数排名

select shop,user_id,ct,rank() over(partition by shop order by ct) rk
from t1;t2

(3)取每个店铺排名前3的

select shop,user_id,ct
from t2
where rk<=3;select shop,user_id,ct
from t2
where rk<=3;

(4)最终SQL

SELECT SHOP, USER_ID, CTFROM (SELECT SHOP,USER_ID,CT,RANK() OVER(PARTITION BY SHOP ORDER BY CT) RKFROM (SELECT SHOP, USER_ID, COUNT(*) CTFROM VISITGROUP BY SHOP, USER_ID) T1) T2WHERE RK <= 3;

3.已知一个表STG.ORDER,有如下字段:Date,Order_id,User_id,amount。请给出sql进行统计:数据样例:2017-01-01,10029028,1000003251,33.57。
1)给出 2017年每个月的订单数、用户数、总成交金额。

select date_format(DATE,'YYYY-MM'),count(Order_id),count(User_id),count(amount)
from ORDER_tab
group by date_format(DATE,'YYYY-MM')

2)给出2017年11月的新客数(指在11月才有第一笔订单)

selectcount(user_id)
fromorder_tab
group by user_id
having date_format(min(dt),'yyyy-MM')='2017-11';

HiveSQL面试题相关推荐

  1. [hiveSQL面试题2]

    hiveSQL面试题整理学习(2) 一.示例数据:某网店用户访问表部分数据(user_id:用户ID,shop:店铺名,表名:visit)如下 (一)需求:每个店铺访问次数Top3的访客信息(输出店铺 ...

  2. [hiveSQL面试题3]

    hiveSQL面试题整理学习(3) 一.示例数据:交易信息表数据如下(表名:trans_info) (一)需求:用一条sql语句得出下列结果 二.示例数据:客户持仓表表数据如下(表名:stock_in ...

  3. HiveSql面试题11详解(count(1)、count(*)和count(列名)的区别)

    从执行结果来看 - count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL - count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL ...

  4. 【博学谷学习记录】超强总结,用心分享|HiveSQL面试题实战(二)|详细的步骤解析

    文章目录 第6题:电商购买金额统计实战 数据准备 请用sql写出所有用户中在今年10月份第一次购买商品的金额 第7题:教育领域SQL实战 表结构 (1)创建图书管理库的图书.读者和借阅三个基本表的表结 ...

  5. SQL之一种通用的连续性问题处理方法【重分组算法】--HiveSQL面试题33

    目录 0 需求分析 1 数据准备 2 数据分析 3 小 结 0 需求分析 数据如下: wang 2020-05-01 wang 2020-05-01 wang 2020-05-01 wang 2020 ...

  6. SQL重叠交叉区间问题分析--HiveSQL面试题30

    目 录 0 需求分析 1 数据准备 2 数据分析 3 小 结 0 需求分析 如下为平台商品促销 数据: 字段为品牌,打折开始日期,打折结束日期 id  stt  edt oppo 2021-06-05 ...

  7. HIveSQL面试题52:近一个月发布的视频中热度最高的top3视频【抖音面试题,不得不去吐槽的一个题目】

    目录 0 问题描述 1 数据准备 2 问题分析 3 小结 0 问题描述 现有用户-视频互动表tb_user_video_log id uid video_id start_time end_time ...

  8. SQL之求股票的波峰和波谷--HiveSQL面试题33【今日头条】

    目录 0 需求 1 数据准备 2 数据分析 3 小 结 0 需求:求股票的波峰Crest 和 波谷trough 波峰:当天的股票价格大于前一天和后一天 波谷:当天的股票价格小于前一天和后一天数据准备: ...

  9. HiveSql面试题12--如何分析去掉最大最小值的平均薪水(字节跳动)

    目录 0 问题描述 1 数据准备 2 数据分析 3 小结 0 问题描述 薪水表中是员工薪水的基本信息,包括雇员编号,部门编号和薪水 第1行表示雇员编号为10001的员工在1号部门,薪水为60117元; ...

最新文章

  1. 在Linux下配置TCP/IP
  2. JAVA基础代码分享--模拟人机猜拳系统
  3. POJ1321 棋盘问题
  4. C# linq创建嵌套组
  5. SpringBoot同时集成Redis和Guava作为缓存组件--进一步分析代码
  6. CSS布局奇淫巧计之-强大的负边距
  7. Python把函数作为参数传入的高阶编程方法
  8. 纷享销客完成新一轮数亿元融资,持续领跑中国CRM产业发展
  9. mysql load settings_在PHP中,有没有办法检查MySQL是否启用了'LOAD DATA INFILE'
  10. C++新特性探究(十):Lambda
  11. windows10中安装anaconda和pytorch
  12. 用数据告诉你:中国最网红的城市在哪里
  13. Linux开机问题排解
  14. Euler characteristic
  15. oeasy教您玩转vim - 23 - 配置文件
  16. pandas读取大csv报错:TypeError: ufunc ‘isnan‘ not supported for the input types, and the inputs could not
  17. 多分类学习(OvO、OVR、MVM 原理区别)
  18. 互联网最新报告出炉!程序员必看系列!
  19. A guided tour of Kerberos: Tutorial
  20. 王者农药人物信息爬取

热门文章

  1. 汇编之简单地打印内容
  2. 网易新闻为何高居榜首,利用好大数据是关键
  3. 小程序错误 传参问题:errMsg: document.get:fail Error: cannot find document with _id
  4. 手机上录制好的视频可以怎么剪切?
  5. google地图学习笔记(1)
  6. 2023四川安全员(B证)模拟
  7. 微信封禁大量色情账号
  8. vue插槽 - slot
  9. ubuntu18.04 安装ceres,g2o,以及cmake升级
  10. 百度的“平台型AI”野望——从百度智能云的新战略、新架构说起