반응형

오늘의 문제는 2019-07-27을 끝으로 30일 내에 활성화된 유저를 찾는 것이다.
날짜와 유저들의 고유 아이디 수를 찾으면 된다,
SELECT activity_date as day, count(distinct user_id) as active_users
FROM Activity
GROUP BY activity_date
HAVING activity_date BETWEEN DATE_SUB('2019-07-27', INTERVAL 30 DAY) AND '2019-07-27'
정답은 위와 같은데, DATE_SUB와 INTERVAL 30 DAY를 몰라서 정답을 못맞췄다.
물론 30일 이전은 2019-06-28이라 계산해도 되겠지만, 수식을 통해 풀어야 더 간단하고 빠르게 일을할 수 있다.
A와 B 기간 사이의 경우 BETWEEN A AND B를 활용하면 된다.
기간의 차이를 구할 때는 DATE_SUB('날짜' INTERVAL '일수' DAY)로 작성하여 30일 이전의 날짜를 찾아주면 된다.
아...! 날짜를 더해줄 땐 DATE_ADD를 활용하면 된다.
1. 해당 날짜 기준 N일 이전의 날짜를 찾고 싶을 때 : DATE_SUB (차이)
2. 해당 날짜 기준 N일 이후의 날짜를 찾고 싶을 때 : DATE_ADD (합)
반응형
'직무강화 > SQL' 카테고리의 다른 글
SQL 학습 GROUP_CONCAT! 엑셀 함수를 SQL에서도. (0) | 2024.08.31 |
---|---|
SQL 학습 10일차, Querie Quality and Percentage (CASE WHEN, AVG) (1) | 2024.08.29 |
SQL 학습 8일차 LEETCODE, Biggest Single Number (0) | 2024.08.26 |
SQL 학습 7일차 LEETCODE 607. Sales Person. (EXIST, NOT EXIST) (0) | 2024.08.24 |
SQL 학습 6일차, 183. Customers Who Never Order (NULL, LEFT JOIN) (0) | 2024.08.22 |