hive学习02天-访问次数统计

hive的写法和sql类似,却又有一点不一样,本次采用模拟数据编写hql统计访问次数:

求出当月的访问次数,截至当月前的每个月最大访问次数、截至当月前每个用户总的访问次数。

数据表如下

A,2015-01,5
A,2015-01,15
B,2015-01,5
A,2015-01,8
B,2015-01,25
A,2015-01,5
A,2015-02,4
A,2015-02,6
B,2015-02,10
B,2015-02,5
A,2015-03,16
A,2015-03,22
B,2015-03,23
B,2015-03,10
B,2015-03,1

解法一:

--(1)
# 先求出每个用户每个月总访问量
create table record2 as select uname,umonth,sum(ucount) as current_month_cntfrom t_accessgroup by uname,umonth;

# record_2 表中内容为:
A   2015-01     33
A   2015-02     10
A   2015-03     38
B   2015-01     30
B   2015-02     15
B   2015-03     44

--(2)

select t1.uname,t1.umonth,t1.current_month_cnt,max(t2.current_month_cnt) as max_cnt,sum(t2.current_month_cnt) as sum_cnt
from record2 t1
join record2 t2
on t1.uname=t2.uname
where t1.umonth >=t2.umonth
group by t1.uname,t1.umonth,t1.current_month_cnt;


# 最终结果:
A   2015-01 33  33  33
A   2015-02 10  43  33
A   2015-03 38  81  38
B   2015-01 30  30  30
B   2015-02 15  45  30
B   2015-03 44  89  44

解法二:


--(1)
# 先求出每个用户每个月总访问量
create table record2 as select uname,umonth,sum(ucount) as current_month_cntfrom t_accessgroup by uname,umonth;

# record_2 表中内容为:
A   2015-01     33
A   2015-02     10
A   2015-03     38
B   2015-01     30
B   2015-02     15
B   2015-03     44

--2

select uname,umonth,current_month_cnt ,
max (current_month_cnt) over(partition by uname order by umonth) as mac_cnt,
sum(current_month_cnt) over(partition by uname order by umonth) as sum_cnt
from
record2;

结果:
A   2015-01 33  33  33
A   2015-02 10  43  33
A   2015-03 38  81  38
B   2015-01 30  30  30
B   2015-02 15  45  30
B   2015-03 44  89  44

代码参考:https://www.jianshu.com/p/cdde7125bc77

原文地址:https://www.cnblogs.com/students/p/10160376.html

时间: 2024-08-06 22:22:07

hive学习02天-访问次数统计的相关文章

博客园添加访问次数统计

1. 先到http://www.amazingcounters.com/sign-up.php   这个地址去申请一个帐户,申请时填写好自己的资料,比如 你的统计风格样式.要统计的地址.要统计的类型,是浏览量(PV) 还是 访客数(UV),或者你也可以2个都统计:这些统计数据都是可以任意修改的哟,不过我们最好还是以真实的访问量为主吧: 2. 在上述网站的"Get HTML Code See Statistics"菜单中找到需要添加的HtmLCOde: 3. 进入博客园后台管理- >

jsp网站访问次数统计的几种方法

我采用的是jsp网页,但是不管采用什么语言,原理是一样的. 第一种,单页面统计.就是说,只要点击这个页面就会统计一次. <body> <%!//在这种标记中定义的变量为全局变量 int count=0; synchronized void count(){ count++; } %> <% count(); out.println("这是第"+count+"个访问者!"); %> </body> 第二种,是利用jsp的

服务器接口访问次数统计

@73 @74 13:4* 73352 24470 13:5* 120485 40336 13:** 511953 170672 @73 14:12 [[email protected]]$ cat /opt/logs/nginx/access/log | grep "24/Sep/2014:13:5" | grep blacklist | wc -l 73352 14:12 [[email protected]]$ cat /opt/logs/nginx/access/log | g

JavaScript实现网站访问次数统计代码

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 <script type="text/javascript"> var caution=f

Servlet学习的两个案例之网站访问次数的统计

一.统计次数的Servlet源码 package com.shanrengo; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.

学习笔记_过滤器应用_1(分ip统计网站的访问次数)

分ip统计网站的访问次数 ip count 192.168.1.111 2 192.168.1.112 59 统计工作需要在所有资源之前都执行,那么就可以放到Filter中了. 我们这个过滤器不打算做拦截操作!因为我们只是用来做统计的. 用什么东西来装载统计的数据.Map<String,Integer> 整个网站只需要一个Map即可! Map什么时候创建(使用ServletContextListener,在服务器启动时完成创建,并只在到ServletContext中),Map保存到哪里!(Ma

Java web--Filter过滤器分IP统计访问次数

分IP统计访问次数即网站统计每个IP地址访问本网站的次数. 分析 因为一个网站可能有多个页面,无论哪个页面被访问,都要统计访问次数,所以使用过滤器最为方便. 因为需要分IP统计,所以可以在过滤器中创建一个Map,使用IP为key,访问次数为value.当有用户访问时,获取请求的IP,如果IP在Map中存在,说明以前访问过,那么在访问次数上加1,即可:IP在Map中不存在,那么设置次数为1. 那么问题来了! 问题一:为什么使用Map存放? Map是一个由键值对组成的数据结构,其中所有的key组成一

php统计网站 / html页面 浏览访问次数程序

本文章来给大这介绍了php自己写的一些常用的网站统计代码写法,用无数据库的与使用数据库及html静态页面浏览资次数统计代码,大家可进入参考. 实例1 直接使用txt文件进行统计的代码 <?php session_start(); //定义session,同一IP登录不累加 $filepath = 'count.txt'; //count.txt 统计次数 if($_SESSION['temp'] == ''){ //判断$_SESSION[temp]的值是否为空,其中的temp为自定义的变量 i

Java web 实现 之 Filter分析ip统计网站的访问次数

统计工作需要在所有资源之前都执行,那么就可以放到Filter中了. 我们这个过滤器不打算做拦截操作!因为我们只是用来做统计的. 用什么东西来装载统计的数据.Map<String,Integer> 整个网站只需要一个Map即可! Map什么时候创建(使用ServletContextListener,在服务器启动时完成创建,并只在到ServletContext中),Map保存到哪里!(Map保存到ServletContext中!!!) Map需要在Filter中用来保存数据 Map需要在页面使用,