电商网站各模块指标的统计以及分析

以下这些都是针对于电商网站的指标来分析业务的:以下这些指标都是使用SQL语句分析得出的结果,首先先创建一张表,然后将数据导入表中,字段根据分析的业务的需要而定,这里我的选择是我已经存在的表进行查询的,下面将给出所有查询的SQL语句

模块分析:
select * from web_log.weblog_etl where dateStr="20180709" limit 5;


1.统计每天每小时的PV数
select day,hour,count(request) as pvs from web_log.weblog_detail where dateStr="20180709" group by day,hour

2.统计每天的pv数
select dayStr,day,count(request) as pvs from web_log.weblog_detail where dateStr="20180709" group by dayStr,day

3.统计每月的pv数
select dayStr,month,count(request) as pvs from web_log.weblog_detail where dateStr="20180709" group by dayStr,month

4.统计不同终端维度的PV数
select dayStr,user_agent,count(request) as pvs from web_log.weblog_detail where dateStr="20180709" group by dayStr,user_agent

5.统计不同终端类型
select user_agent,count(user_agent) as iphone from web_log.weblog_detail where dateStr="20180709" group by user_agent

6.统计每个月每个终端的pv数
select dayStr,month,day,hour,user_agent,count(request) as pvs from web_log.weblog_detail where dateStr="20180709" group by dayStr,month,day,hour,user_agent

7.统计人均pv数
select dayStr,count(request)/count(distinct ip) from web_log.weblog_detail where dateStr="20180709" group by dayStr

8.统计不同来源的pv数

select
*
from
(
select t.ref_host,t.dayStr,t.hour,t.pv,row_number() over (partition by t.ref_host order by t.pv) as rnk
from 
(
select
ref_host,dayStr,hour,count(request) as pv
from
web_log.weblog_detail
where
dateStr="20180709"
group by
ref_host,dayStr,hour
)t
)n
where n.rnk <4
---------------
select
*
from
(
select t.ref_host,t.pv,row_number() over (partition by t.ref_host order by t.pv) as rnk
from 
(
select
ref_host,count(request) as pv
from
web_log.weblog_detail
where
dateStr="20180709"
group by
ref_host
)t
)n
where n.rnk <4

9.受访分析
9.1统计每日热门的受访页面的topN
9.1.1先统计每日每个网页访问次数
  select dayStr,request,count(request) as counts from weblog_detail
where dateStr="20180709" group by dayStr,request

(2)row_number
   select dayStr,request,count(request) as pv,row_number() over (partition by request order by request) from weblog_detail
where dateStr="20180709" group by dayStr,request

10.访客分析
10.1每个访客每小时的访问数(session个数)
select
ip,substring(s_time,12,2) as hour,count(distinct sessionId) as number
from web_log.weblog_pv
where
dateStr="20180709"
group by ip,substring(s_time,12,2)

10.2每个小时的ip访问数
select day,hour,count(ip) from web_log.weblog_detail where dateStr="20180709" group by day,hour


10.3每天的/每月的ip访问数
select month,day,count(ip) from web_log.weblog_detail where dateStr="20180709" group by month,day

10.4统计新增访客---需要维护 历史访客表

11.visit模型分析
11.1单次访客统计(sessionId只有一个)
select
substring(s_time,9,2),ip,count(distinct sessionId) as number
from
web_log.weblog_pv
where
dateStr="20180709"
group by
substring(s_time,9,2),ip
having number=1

11.2回头访客个数(sessionId >1)
select
substring(s_time,9,2),ip,count(distinct sessionId) as number
from
web_log.weblog_pv
where
dateStr="20180709"
group by
substring(s_time,9,2),ip
having number>1

11.3人均访问频率(一天访问多少次) 总session个数/总人数
select
substring(s_time,9,2) as day,count(distinct sessionId)/count(distinct ip) as number
from
web_log.weblog_pv
where
dateStr="20180709"
group by 
substring(s_time,9,2)

11.4用户平均访问页数
select sum(pageNum)/count(distinct ip) from web_log.weblog_visit where dayStr="20180709"

12pageview模型分析
12.1每个用户的访问时长
select
ip,sum(stayTime) as alltime
from
web_log.weblog_pv
where dateStr="20180709"
group by ip
12.2 用户的平均访问时长
select sum(stayTime)/count(distinct ip) as avg_time
from
web_log.weblog_pv
where
dateStr="20180709"

12.3访问页面的漏斗

create table tb_num1 as 
select "step1" as  step, count(*) as number from web_log.weblog_pv where dateStr="20180709" and request  like "%/hadoop-mahout%"  

union all 
select "step2" as  step, count(*) as number from web_log.weblog_pv where dateStr="20180709" and request  like "%/hadoop-hive%"   

union all  
select "step3" as  step, count(*) as number from web_log.weblog_pv where dateStr="20180709" and request  like "%/hadoop-zookeeper%"  

union all  
select "step4" as  step,count(*) as number from web_log.weblog_pv where dateStr="20180709" and request  like "%/black-ip-list%"  


create table tb_num as 
select "step1" as  step, count(*) as number from web_log.weblog_pv where dayStr="20180709" and request  like "%/hadoop-mahout%"
union all   
select "step2" as  step, count(*) as number from web_log.weblog_pv where dayStr="20180709" and request  like "%/hadoop-hive%" 
union all  
select "step3" as  step, count(*) as number from web_log.weblog_pv where dayStr="20180709" and request  like "%/hadoop-zookeeper%"  
union all  
select "step4" as  step,count(*) as number from web_log.weblog_pv where dayStr="20180709" and request  like "%/black-ip-list%"


select
   *
from
   tb_num
   
-----全链接    笛卡尔积
select
   *
from
   (select tb_num.step as ak,tb_num.number as av from tb_num) a,
   (select tb_num.step as bk,tb_num.number as bv from tb_num) b

-----漏斗

select
 t.ak,t.av,t.bk,t.bv,t.av/t.bv as retain_rate
from
(
select
   *
from
   (select tb_num.step as ak,tb_num.number as av from tb_num) a,
   (select tb_num.step as bk,tb_num.number as bv from tb_num) b
) t
where
   t.ak='step1' and t.bk='step1' or
   t.ak='step2' and t.bk='step1' or
   t.ak='step3' and t.bk='step2' or
   t.ak='step4' and t.bk='step3'

 实例:不使用hive中的函数  

公司有多个部门,统计出各个部门中 按照工资排序 前3的。(9条)
      name        deptNo         sal    
      1-1        1            9000
      1-2        1            6000
      1-3        1            7000
      2-1        2            8000
      3-2        3            7600
      2-3        2            8800
      2-5        2            8800
      3-3        3            5500
      3-4        1            5000

SQL语句:

select deptno, name, sal      
from emp e1     
where      
   (  
    select count(1)     
    from emp e2     
    where e2.deptno=e1.deptno and e2.sal>=e1.sal  
   ) <=3 /*这里的数值表示你想取前几名*/  
order by deptno, sal desc; 


   


 


          

猜你喜欢

转载自blog.csdn.net/wyz0516071128/article/details/81241224