어제에 이어서 DBeaver를 사용한 두번째 sql과제.
이번에도 차근차근 풀어보았다. 당연히 가장 먼저 할 것은 전체 테이블을 조회하는것.
SELECT *
FROM point_users
다음은 이번에 사용할 데이터만 조회한다. 가입일자 별로 획득한 평균 데이터를 조회할 것이기 때문에 필요한 것은 날짜 데이터가 있는 created_at와 포인트가 있는 point이다.
SELECT
created_at,
point
FROM point_users
이번에는 날짜의 표시형식을 변경해준다. 정답에는 '년-월-일' 형식으로 표시되어있기때문에 date_format을 이용해서 같은 형식으로 수정한다.
SELECT
DATE_FORMAT(created_at, '%Y-%m-%d') created_at,
point
FROM point_users
그리고 날짜별로 평균 포인트 획득량을 계산한다. created_at의 열을 기준으로 group by를 사용하고 point열의 데이터를 avg를 통해서 평균을 구해준 뒤 round로 반올림해준다.
SELECT
DATE_FORMAT(created_at, '%Y-%m-%d') created_at,
ROUND(AVG(point)) average_points
FROM point_users
group by DATE_FORMAT(created_at, '%Y-%m-%d')
이렇게 최종결과를 얻어낼 수 있었다. 어제와 마찬가지로 원래 오늘 과제는 여기서 끝이지만, 사전캠프 일정상 빠진 두 연습문제 중 하나인 연습문제 7번을 풀어보기로 했다.
연습게임7) 랭크게임 하다가 싸워서 피드백 남겼어요…
- lol_feedbacks 테이블에서 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리를 작성해주세요!
select *
from lol_feedbacks
order by satisfaction_score DESC
- lol_feedbacks 테이블에서 각 유저별로 최신 피드백을 찾는 쿼리를 작성해주세요!
select
id,
user_name,
max(feedback_date) Latest_feedback_data
from lol_feedbacks
group by user_name
- lol_feedbacks 테이블에서 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리를 작성해주세요!
select count(*) satisfaction_score_5
from lol_feedbacks
where satisfaction_score = 5
- lol_feedbacks 테이블에서 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리를 작성해주세요!
select
id,
user_name,
count(*) feedback_count
from lol_feedbacks
group by id
order by feedback_count DESC
limit 3
- lol_feedbacks 테이블에서 평균 만족도 점수가 가장 높은 날짜를 찾는 쿼리를 작성해주세요!
select
feedback_date,
avg(satisfaction_score) avg_score
from lol_feedbacks
group by feedback_date
order by avg_score DESC
limit 1
'내일배움캠프' 카테고리의 다른 글
AI 개발자 JD 분석 (0) | 2024.06.13 |
---|---|
[SQL 과제] Lv3. 이용자의 포인트 조회하기 (0) | 2024.06.12 |
[SQL 과제] Lv1. 데이터 속 김서방 찾기 + a (0) | 2024.06.10 |
아티클스터디 - AI가 가져올 미래는? AI 스타트업 창업가들의 말말말 (0) | 2024.06.07 |
공부하다보니 팀 프로젝트 시간이 왔어요! (0) | 2024.06.05 |