본문 바로가기
SQL

[SQL 기초 연습] 7. 랭크게임 하다가 싸워서 피드백 남겼어요

by wooksss 2025. 1. 16.
아래와 같은 lol_feedbacks (LOL 피드백 테이블)이 있습니다.
id
user_name
satisfaction_score
feedback_date
1
르탄이
5
2023-03-01
2
배캠이
4
2023-03-02
3
구구이
3
2023-03-01
4
이션이
5
2023-03-03
5
구구이
4
2023-03-04
25.
lol_feedbacks 테이블에서 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리를 작성해주세요!
    > SELECT * FROM lol_feedbacks ORDER BY satisfaction_score DESC;
26.
lol_feedbacks 테이블에서 각 유저별로 최신 피드백을 찾는 쿼리를 작성해주세요!
    > SELECT * FROM lol_feedbacks ORDER BY feedback_date  DESC LIMIT 1;
    > SELECT user_name, MAX(feedback_date) FROM lol_feedbacks GROUP BY user_name;
27.
lol_feedbacks 테이블에서 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리를 작성해주세요!
    > SELECT satisfaction_score, COUNT(*) AS count 
       FROM lol_feedbacks WHERE satisfaction_score = 5;
28.
lol_feedbacks 테이블에서 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리를 작성해주세요!
    > SELECT user_name, COUNT(user_name) AS count
       FROM lol_feedbacks GROUP BY user_name ORDER BY count DESC LIMIT 3;
29.
lol_feedbacks 테이블에서 평균 만족도 점수가 가장 높은 날짜를 찾는 쿼리를 작성해주세요!
    > SELECT feedback_date, AVG(satisfaction_score) AS avg_score FROM lol_feedbacks
       GROUP BY feedback_date ORDER BY avg_score DESC LIMIT 1;

 

-- 26번은 문제를 잘못 이해했다. 각 유저별로 최신이기 때문에 GROUP BY로 묶어주고

   그 중에서 가장 최신 피드백을 찾아야 한다.

-- 처음 작성했던 쿼리는 모든 유저의 피드백 중에서 가장 최신을 찾는 쿼리이기 때문에 수정

-- SQL의 ORDER BY 절은 오름차순(ASC)이 기본값이기 때문에 내림차순은 반드시 DESC 명시