一道Hive面试题:累积报表
来源:互联网 发布:tim 知乎 编辑:程序博客网 时间:2024/06/06 06:42
我们有如下的用户访问数据:
要求使用SQL统计出每个用户的累积访问次数,如下表所示:
分析
首先可以统计出每个用户每月访问次数的结果,如下表:
然后以userId相等为条件进行自连接,可以有类似下面的结果:
u01 2017-01 11 u01 2017-01 11u01 2017-01 11 u01 2017-02 12u01 2017-02 12 u01 2017-01 11u01 2017-02 12 u01 2017-02 12
以左边的userId,vMonth,vCount进行分组,然后求最右边一列的和就可以了,当然要加一个现在条件,那就是右边的vMonth要小于等于左边的vMonth。
SQL命令
第一步,创建月份访问统计表:
create table t_vlog_month asselect userId,substr(vDate,1,7) as vMonth, sum(vCount) as mCountfrom t_vloggroup by userId,substr(vDate,1,7);
第二步,累积相加:
select t1.userId,t1.vMonth,max(t1.mCount),sum(t2.mCount) as aCountfrom t_vlog_month as t1 inner join t_vlog_month as t2 on (t1.userId=t2.userId)where t2.vMonth <= t1.vMonthgroup by t1.userId,t1.vMonth;
0 0
- 一道Hive面试题:累积报表
- 一道hive面试题
- IOS面试题累积
- 从一道hive面试题的解决思路中理解hive应用
- 面试题选(不断累积经验)
- Java的面试题(知识点累积)
- 一道微软面试题
- 一道面试题
- 华为一道面试题
- 一道面试题
- 一道面试题
- 一道sql面试题
- 一道面试题
- 一道面试题
- 一道华为面试题
- 一道面试题
- 一道微软面试题
- 一道c++面试题
- 蓝桥杯 带分数 暴力
- 蓝桥杯方格填数
- 云计算相关概念
- 软引用、弱引用和虚引用
- Java开发基础——数组、List与Map的使用
- 一道Hive面试题:累积报表
- rs.absolute(),rs.isAfterLast(),rs.next(),rs.relative()简单解释
- C语言typedef的用法
- 文件管理-最好用的文件管理器
- 2015_沈阳站_P4
- Java图形界面编写的省市级联选项
- 【JavaScript 学习--01】--正则表达式的正则前瞻(?=)和非捕获性分组(?:)区别
- nyoj ACM:前缀式计算( 堆栈的使用 或 递归 )
- java反射的使用