[SQL문제풀기] User Activity for the Past 30 Days I

silver's avatar
Oct 30, 2025
[SQL문제풀기] User Activity for the Past 30 Days I
Contents
문제MySQL

문제

User Activity for the Past 30 Days I - LeetCode
Can you solve this real interview question? User Activity for the Past 30 Days I - Table: Activity +---------------+---------+ | Column Name | Type | +---------------+---------+ | user_id | int | | session_id | int | | activity_date | date | | activity_type | enum | +---------------+---------+ This table may have duplicate rows. The activity_type column is an ENUM (category) of type ('open_session', 'end_session', 'scroll_down', 'send_message'). The table shows the user activities for a social media website. Note that each session belongs to exactly one user.   Write a solution to find the daily active user count for a period of 30 days ending 2019-07-27 inclusively. A user was active on someday if they made at least one activity on that day. Return the result table in any order. The result format is in the following example. Note: Any activity from ('open_session', 'end_session', 'scroll_down', 'send_message') will be considered valid activity for a user to be considered active on a day.   Example 1: Input: 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 | +---------+------------+---------------+---------------+ Output: +------------+--------------+ | day | active_users | +------------+--------------+ | 2019-07-20 | 2 | | 2019-07-21 | 2 | +------------+--------------+ Explanation: Note that we do not care about days with zero active users.
User Activity for the Past 30 Days I - LeetCode

MySQL

내가 작성한 오답

: date_sub('2019-07-27',interval 30 day) → 총 31일
notion image
select activity_date day, count(distinct user_id) active_users from Activity where activity_date between date_sub('2019-07-27',interval 30 day) and '2019-07-27' group by activity_date;

내가 작성한 정답

select activity_date day, count(distinct user_id) active_users from Activity where activity_date between date_sub('2019-07-28',interval 29 day) and '2019-07-28' group by activity_date;
Share article

silver