TIL/사전캠프 퀘스트

TIL 2024-09-23(SQL_달리기반 2.)

myoma 2024. 9. 23. 14:38

Lv2. 날짜별 획득포인트 조회하기

  • 상황 : 이번에는 이용자들이 잘 활동하고 있는지 보고자 합니다. 포인트가 많을수록 활동을 잘하고 있다고 생각 할 수 있습니다. 날짜별로 획득한 포인트가 점점 늘어나는지 줄어드는지 확인해봅시다.
  • 데이터 설명
    • point_users 테이블은 스파르타코딩클럽 가입 유저들의 포인트에 대한 정보를 기록한 테이블입니다.
      • point_user_id : user_point 행을 구별하기 위한 key(varchar255)
      • created_at : 아이디 생성 날짜(timestamp)
      • updated_at : 정보 업데이트 날짜(timestamp)
      • user_id : 익명화된 유저들의 아이디(varchar255)
      • point : 보유하고 있는 포인트(int)

  • 문제 : 다음과 같은 결과 테이블을 만들어봅시다.
    • created_at : 익명화된 유저들의 아이디(varchar255)
    • average_points : 유저가 획득한 날짜별 평균 포인트(int), 반올림 필수

SELECT date(created_at), ROUND(AVG(point)) average_points 
FROM point_users
GROUP BY date(created_at)

 

date의 타입이 날짜로 되어있기에 date() 함수를 사용하여 타입을 변경시켜주고, 각 날짜별 평균 포인트이기에 날짜별로 GROUP BY를 해주어 각각 묶어준다.

 

point의 평균 값을 내는 것은 AVG()를 사용하지만 반올림이 필수라 하였기에 ROUND() 함수를 사용해준다.

  • ROUND(수치값, 반올림자릿수) 
  • EX) ROUND(123456, -2) 두번째 자리에서 반올림, result : 123500

이렇게 하면 원하는 결과를 얻을 수 있다.