1. 常规指标总结—-连续性指标案例

举例:连续三周活跃

其实最简单的实现方式就是,三个子查询,然后直接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

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐