美文网首页
uv、pv、浏览深度、留存率

uv、pv、浏览深度、留存率

作者: 我是Msorry | 来源:发表于2022-11-10 19:39 被阅读0次
-- uv、pv、留存率(按⽇)统计

-- pv 按日分组,统计 count behavior_type = 1
-- uv 按日统计,统计 count distinct user_id
-- pv/uv 
SELECT
    dates,
    COUNT(IF(behavior_type = 1,user_id,null)) AS 'pv',
    COUNT( DISTINCT user_id ) AS 'uv',
     COUNT(IF(behavior_type = 1,user_id,null))/COUNT( DISTINCT user_id ) AS 'pv/uv'
FROM
    tmp_table 
GROUP BY
    dates;
    
DROP view   user_remain;
-- 活跃用户留存率
CREATE VIEW user_remain AS SELECT
a.dates,
COUNT( DISTINCT a.user_id ) AS 'user_count',
COUNT(
    DISTINCT
    IF
        (
            DATEDIFF( b.dates, a.dates )= 1,
            b.user_id,
        NULL 
        )) AS 'remain1',
    COUNT(
    DISTINCT
    IF
        (
            DATEDIFF( b.dates, a.dates )= 2,
            b.user_id,
        NULL 
        )) AS 'remain2',
    COUNT(
    DISTINCT
    IF
        (
            DATEDIFF( b.dates, a.dates )= 3,
            b.user_id,
        NULL 
        )) AS 'remain3',
    COUNT(
    DISTINCT
    IF
        (
            DATEDIFF( b.dates, a.dates )= 4,
            b.user_id,
        NULL 
        )) AS 'remain4',
    COUNT(
    DISTINCT
    IF
        (
            DATEDIFF( b.dates, a.dates )= 5,
            b.user_id,
        NULL 
        )) AS 'remain5',
    COUNT(
    DISTINCT
    IF
        (
            DATEDIFF( b.dates, a.dates )= 6,
            b.user_id,
        NULL 
        )) AS 'remain6',
    COUNT(
    DISTINCT
    IF
        (
            DATEDIFF( b.dates, a.dates )= 7,
            b.user_id,
        NULL 
        )) AS 'remain7',
    COUNT(
    DISTINCT
    IF
        (
            DATEDIFF( b.dates, a.dates )= 15,
            b.user_id,
        NULL 
        )) AS 'remain15',
    COUNT(
    DISTINCT
    IF
        (
            DATEDIFF( b.dates, a.dates )= 30,
            b.user_id,
        NULL 
        )) AS 'remain30' 
FROM
    (
    SELECT
        user_id,
        dates 
    FROM
        tmp_table 
    GROUP BY
        user_id,
        dates 
    ) a
    LEFT JOIN (
    SELECT
        user_id,
        dates 
    FROM
        tmp_table 
    GROUP BY
        user_id,
        dates 
    ) b ON a.user_id = b.user_id 
WHERE
    b.dates > a.dates 
GROUP BY
    a.dates;


SELECT 
dates,
user_count,
CONCAT(cast((remain1/user_count*100) as DECIMAL(10,2)),'%') as 'day1',
CONCAT(cast((remain2/user_count*100) as DECIMAL(10,2)),'%') as 'day2',
CONCAT(cast((remain3/user_count*100) as DECIMAL(10,2)),'%') as 'day3',
CONCAT(cast((remain4/user_count*100) as DECIMAL(10,2)),'%') as 'day4',
CONCAT(cast((remain5/user_count*100) as DECIMAL(10,2)),'%') as 'day5',
CONCAT(cast((remain6/user_count*100) as DECIMAL(10,2)),'%') as 'day6',
CONCAT(cast((remain7/user_count*100) as DECIMAL(10,2)),'%') as 'day7',
CONCAT(cast((remain15/user_count*100) as DECIMAL(10,2)),'%') as 'day15',
CONCAT(cast((remain30/user_count*100) as DECIMAL(10,2)),'%') as 'day30'
FROM 
user_remain;

相关文章

网友评论

      本文标题:uv、pv、浏览深度、留存率

      本文链接:https://www.haomeiwen.com/subject/jritxdtx.html