美文网首页
Leetcode1141.查询近30天活跃用户数(简单)

Leetcode1141.查询近30天活跃用户数(简单)

作者: kaka22 | 来源:发表于2020-07-17 20:14 被阅读0次

题目
活动纪录表:Activity

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| user_id       | int     |
| session_id    | int     |
| activity_date | date    |
| activity_type | enum    |
+---------------+---------+

该表是用户在社交网站的活动记录。
该表没有主键,可能包含重复数据。
activity_type 字段为以下四种值 ('open_session', 'end_session', 'scroll_down', 'send_message')。
每个 session_id 只属于一个用户。

请写SQL查询出截至 2019-07-27(包含2019-07-27),近 30天的每日活跃用户(当天只要有一条活跃记录,即为活跃用户),

查询结果示例如下:

Activity table:

+---------+------------+---------------+---------------+
| user_id | session_id | activity_date | activity_type |
+---------+------------+---------------+---------------+
| 1       | 1          | 2019-07-20    | open_session  |
| 1       | 1          | 2019-07-20    | scroll_down   |
| 1       | 1          | 2019-07-20    | end_session   |
| 2       | 4          | 2019-07-20    | open_session  |
| 2       | 4          | 2019-07-21    | send_message  |
| 2       | 4          | 2019-07-21    | end_session   |
| 3       | 2          | 2019-07-21    | open_session  |
| 3       | 2          | 2019-07-21    | send_message  |
| 3       | 2          | 2019-07-21    | end_session   |
| 4       | 3          | 2019-06-25    | open_session  |
| 4       | 3          | 2019-06-25    | end_session   |
+---------+------------+---------------+---------------+

Result table:

+------------+--------------+ 
| day        | active_users |
+------------+--------------+ 
| 2019-07-20 | 2            |
| 2019-07-21 | 2            |
+------------+--------------+ 

非活跃用户的记录不需要展示。

生成数据

CREATE TABLE Activity1 (user_id INT, session_id INT, activity_date DATE, activity_type VARCHAR(20));
 
INSERT INTO Activity1 (user_id, session_id, activity_date, activity_type) VALUES ('1', '1', '2019-07-20', 'open_session');
INSERT INTO Activity1 (user_id, session_id, activity_date, activity_type) VALUES ('1', '1', '2019-07-20', 'scroll_down');
INSERT INTO Activity1 (user_id, session_id, activity_date, activity_type) VALUES ('1', '1', '2019-07-20', 'end_session');
INSERT INTO Activity1 (user_id, session_id, activity_date, activity_type) VALUES ('2', '4', '2019-07-20', 'open_session');
INSERT INTO Activity1 (user_id, session_id, activity_date, activity_type) VALUES ('2', '4', '2019-07-21', 'send_message');
INSERT INTO Activity1 (user_id, session_id, activity_date, activity_type) VALUES ('2', '4', '2019-07-21', 'end_session');
INSERT INTO Activity1 (user_id, session_id, activity_date, activity_type) VALUES ('3', '2', '2019-07-21', 'open_session');
INSERT INTO Activity1 (user_id, session_id, activity_date, activity_type) VALUES ('3', '2', '2019-07-21', 'send_message');
INSERT INTO Activity1 (user_id, session_id, activity_date, activity_type) VALUES ('3', '2', '2019-07-21', 'end_session');
INSERT INTO Activity1 (user_id, session_id, activity_date, activity_type) VALUES ('4', '3', '2019-06-25', 'open_session');
INSERT INTO Activity1 (user_id, session_id, activity_date, activity_type) VALUES ('4', '3', '2019-06-25', 'end_session');

解答
首先选择近 30天的每日活跃用户

SELECT *
FROM Activity1 AS A
WHERE DATEDIFF('2019-07-27', A.`activity_date`) <= 30;

然后对日期进行分组 选出每个组的uid个数(去重)

SELECT A.`activity_date` AS DAY, COUNT(DISTINCT A.`user_id`) AS active_users
FROM Activity1 AS A
WHERE DATEDIFF('2019-07-27', A.`activity_date`) <= 30
GROUP BY  A.`activity_date`;

相关文章

  • Leetcode1141.查询近30天活跃用户数(简单)

    题目活动纪录表:Activity 该表是用户在社交网站的活动记录。该表没有主键,可能包含重复数据。activity...

  • leetcode数据库类型:1141.查询近30天活跃用户数,难

    leetcode数据库类型:1141.查询近30天活跃用户数,难度:简单 解答: 这道题首先要把user_i...

  • 产品上线后,要注意的指标

    平均用户收入=总收入/用户数 注册用户数 活跃用户数:日活跃用户数DAU、月活跃用户数MAU 新用户占比 用户流失...

  • 扫盲名词

    DAU:每日活跃用户数 WAU:每周活跃用户数 PV:浏览量 UV:用户数

  • APP数据分析基础指标

    1.用户:总用户数、新用户数、留存用户、转化率、地域分布; 2.活跃:日活跃(DAU)、周活跃(WAU)、月活跃(...

  • 活跃率

    活跃率是活跃用户在总用户中的占比,计算时用活跃用户数除以总用户数。 根据时间可分为日活跃率、周活跃率、月活跃率等 ...

  • 活跃用户数

    怎么定义活跃呢?是某个用户登录了App算活跃用户?还是打开使用了App里哪个功能算活跃用户? 不同的产品定义不一样...

  • DAU&DNU、留存

    DAU是什么? DAU,全称daily active user.即日活跃用户数。不同业务场景下,活跃用户数的范围定...

  • 数据

    当下国内互联网上比较健康的产品(较大体量)平均数据。1. 日活跃用户数/总用户数= 5% 2. 周活跃用户数/总用...

  • 驯化抖音成为我们的工具

    抖音公布了2018年的用户数据,国内日活跃用户数量突破2.5亿,国内月活跃用户数突破5亿,苹果APP商店中免费AP...

网友评论

      本文标题:Leetcode1141.查询近30天活跃用户数(简单)

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