본문 바로가기
문제풀이/SQL(My sql)

[문제풀이] Leet code - easy2

by kime2 2024. 8. 15.

문제1

출처 : Actors and Directors Who Cooperated At Least Three Times - LeetCode

 

세번이상 만난 배우와, 감독 찾기

풀이(MYSQL)

select actor_id ,director_id 
from ActorDirector
group by actor_id ,director_id
having count(*) >=3

 

문제2

출처 : User Activity for the Past 30 Days I - LeetCode

 

2019-07-27을 포함하여 30일 전날까지 일별 활성화고객을 날짜별로 조회하라

풀이(MYSQL)

select activity_date as 'day' , count(distinct(user_id)) as 'active_users'
from Activity
where activity_date between DATE_SUB('2019-07-27', INTERVAL 29 day) and '2019-07-27'
group by activity_date

 

  • where : 방문 날짜가 2019-07-27에서 29일 뺀 날짜 사이에 있는 경우 필터링 해서
  • group by, select : 날짜별로 방문한 고유 유저의 수를 집계
  • 날짜를 쓸때에는 문자처럼 ' ' 사용
  • 날짜 빼기 : DATE_SUB(기준 날짜, INTERVAL )  
  • DATE_SUB를 통해 27일에서 30일 빼면 6월 27일부터 계산이 된다, 이 경우  '6월 27일' <= 날짜 <= '7월 27일' 이 적용 되는데(총 31일 기간) 문제에서는 6월 27일을 포함한 30일 기간이니까  '6월 28일' <= 날짜 <= '7월 27일'을 해줘야 한다 > 즉, 30일을 뺴는게 아니라 29일을 빼줘야 한다