1. 常规指标总结----连续性指标案例
程序员文章站
2022-11-22 17:11:11
举例:连续三周活跃其实最简单的实现方式就是,三个子查询,然后直接join。这里我们运用另外一种方式,采用了,union all 的方式进行拼接,那么join与union all,有什么本质区别呢?他们最大的区别就是,join属于横向拼接,而union all 属于纵向拼接。就好比什么呢?就好比有人问,where与having的区别是一个道理,where是过滤原始数据的一个一个的行,而having是过滤分完组的那个组是一个道理,各有各的用处。直接上代码。insert into table ads_...
举例:连续三周活跃
其实最简单的实现方式就是,三个子查询,然后直接join。
这里我们运用另外一种方式,采用了,union all 的方式进行拼接,那么join与union all,有什么本质区别呢?他们最大的区别就是,join属于横向拼接,而union all 属于纵向拼接。就好比什么呢?就好比有人问,where与having的区别是一个道理,where是过滤原始数据的一个一个的行,而having是过滤分完组的那个组是一个道理,各有各的用处。
直接上代码。
insert into table ads_continuity_wk_count
select
'2020-06-25',
concat(date_add(next_day('2020-06-25','MO'),-7*3),'_',date_add(next_day('2020-06-25','MO'),-1)),
count(*)
from (
select
mid_id
from
(
--求本周活跃
select
mid_id
from dws_uv_detail_daycount
where dt >= date_add(next_day('2020-06-25','monday'),-7) --本周一
and dt <= date_add(next_day('2020-06-25','monday'),-1) --本周日
group by mid_id --对设备去重,一个设备在一周之内最多出现一次。
union all
--上周活跃
select
mid_id
from dws_uv_detail_daycount
where dt >=date_add(next_day('2020-06-25','monday'),-7*2)
and dt <=date_add(next_day('2020-06-25','monday'),-7-1)
group by mid_id
union all
--上上周活跃
select
mid_id
from dws_uv_detail_daycount
where dt>=date_add(next_day('2020-06-25','monday'),-7*3)
and dt <=date_add(next_day('2020-06-25','monday'),-7*2-1)
group by mid_id
)t1
group by mid_id
having count(*) = 3
)t2;
拼接完毕之后,按照设备ID,进行分组。过滤条件:count=3,这样的设备,就是连续三周的活跃设备。
count的时候对每个设备ID都进行count,因为我们是按照设备ID进行分组操作,所以count=3的,就是连续三周出现的。**
本文地址:https://blog.csdn.net/weixin_45284133/article/details/108974187
上一篇: Pandas六、重命名和联合