• LeetCode 1142.过去30天的用户活动2


    数据准备

    drop table Activity;
    Create table If Not Exists Activity (user_id int, session_id int, activity_date date, activity_type ENUM('open_session', 'end_session', 'scroll_down', 'send_message'));
    Truncate table Activity;
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('1', '1', '2019-07-20', 'open_session');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('1', '1', '2019-07-20', 'scroll_down');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('1', '1', '2019-07-20', 'end_session');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('2', '4', '2019-07-20', 'open_session');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('2', '4', '2019-07-21', 'send_message');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('2', '4', '2019-07-21', 'end_session');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('3', '2', '2019-07-21', 'open_session');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('3', '2', '2019-07-21', 'send_message');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('3', '2', '2019-07-21', 'end_session');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('3', '5', '2019-07-21', 'open_session');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('3', '5', '2019-07-21', 'scroll_down');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('3', '5', '2019-07-21', 'end_session');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('4', '3', '2019-06-25', 'open_session');
    insert into Activity (user_id, session_id, activity_date, activity_type) values ('4', '3', '2019-06-25', 'end_session');
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    需求

    编写 SQL 查询以查找截至 2019-07-27(含)的 30 天内每个用户的平均会话数,四舍五入到小数点后两位。只统计那些会话期间用户至少进行一项活动的有效会话。

    输入

    在这里插入图片描述

    输出

    with t1 as (
        select user_id,session_id
        from Activity
        where activity_date<='2019-07-27' and activity_date>date_sub('2019-07-27',interval 30 day )
        group by user_id,session_id
    ),t2 as (
        select user_id,count(1) as cnt1
        from t1
        group by user_id
    )
    select round(sum(cnt1)/count(user_id),2) as average_sessions_per_user
    from t2;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

  • 相关阅读:
    手搭手zabbix5.0监控redis7
    uniapp 之 uview 表单验证手机号,如果手机号不是必填,但是如果填了就要验证格式
    react经验1:监听窗体尺寸变化
    Android学习-加载网络图片、沉浸式状态栏
    bfs模板总结
    unity 烘焙的时候出现模型没有光影的情况
    LLMs之InternLM:InternLM-20B的简介、安装、使用方法之详细攻略
    婴儿摇篮出口美国CPC认证要求
    Hadoop核心组件及组件介绍
    【云原生之kubernetes实战】在k8s环境下部署WBO在线协作白板
  • 原文地址:https://blog.csdn.net/weixin_51696882/article/details/132869262