Coding Planet
leetcode > 1141. User Activity for the Past 30 Days I 본문
반응형
✨ 문제
https://leetcode.com/problems/user-activity-for-the-past-30-days-i/description/
- Write an SQL query 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.
💻코드
SELECT TO_CHAR(ACTIVITY_DATE,'YYYY-MM-DD') AS DAY
, COUNT(DISTINCT USER_ID) AS ACTIVE_USERS
FROM ACTIVITY
WHERE ACTIVITY_DATE < '2019-07-27'
AND TO_DATE('2019-07-27','YYYY-MM-DD') - ACTIVITY_DATE < 30
GROUP BY ACTIVITY_DATE
👩💻 풀이 방법
- Activity 테이블에서 USER_ID가 duaplicate할 수 있다는 힌트를 파악해야한다.
- 문제 풀이를 위해서는 1) 활동 유저의 아이디를 중복 없이 보여주는 것 2) 2019-07-27을 포함한 30일 이전 활동만을 포함해야한다는 것, 이상의 두 조건을 충족해야한다.
- 1) DISTINCT를 통해 USER_ID를 중복되지 않게 표현한다.
- 2) 오라클에서는 MySQL과는 다르게 DATEDIFF함수를 지원하지 않으므로 날짜차이를 출력하기 위해서는
- 종료일자(YYYY-MM-DD) - 시작일자(YYYY-MM-DD) 형식을 사용해야한다.
🔔 느낀점
- leetcode 문제의 경우 요구하는 테이블 형식을 example로 보여주기 때문에 컬럼명이나 데이터 표현식을 잘 살펴봐야겠다.
- leetcode의 solutions들은 MySQL이 압도적이다. 왜 그럴까?
반응형
'SQL' 카테고리의 다른 글
WHERE 1=1 쓰는 이유? 쿼리의 유연성을 위해! (1) | 2024.01.02 |
---|---|
leetcode > 1795. Rearrange Products Table (0) | 2023.02.07 |
leetcode > 1527. Patients With a Condition (0) | 2023.02.06 |
leetcode > 1484. Group Sold Products By The Date (0) | 2023.02.06 |
leetcode > 1667. Fix Names in a Table (0) | 2023.02.06 |
Comments