[사전캠프] SQL 연습문제 - 7
2024. 8. 22. 00:38ㆍ내일배움캠프
문제 : 문제 설명
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 |
[lol_feedbacks(LOL 피드백) 테이블]
Q1. 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리 작성
SELECT *
FROM lol_feedbacks
ORDER BY satisfaction_score
ORDER BY 를 사용해 만족도 점수를 기준으로 테이블을 내림차순 정렬하였다.
Q2. 각 유저별 최신 피드백을 찾는 쿼리 작성
SELECT user_name, MIN(feedback_date) recent_feedback_date
FROM lol_feedbacks
GROUP BY 1
GROUP BY 로 'user_name' 컬럼을 그룹화하고 MIN 함수를 통해 각 그룹별 'feedback_date' 의 최소 값을 'recent_feedback_date' 에 출력하는 쿼리를 작성하였다.
Q3. 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리 작성
SELECT COUNT(1) score_five
FROM lol_users
WHERE satisfaction_score = 5
WHERE 절로 'satisfaction_score' 가 '5' 인 레코드들만 추린 후 COUNT 를 사용해 모든 레코드의 개수를 'score_five' 컬럼으로 출력하는 쿼리 작성
Q4. 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리 작성
SELECT user_name, COUNT(1) feedback_count
FROM lol_feedbacks
GROUP BY 1
ORDER BY 2 DESC
LIMIT 3
'user_name' 을 그룹화해 각 그룹별 레코드 개수를 COUNT 로 연산 'feedback_count' 에 출력 해당 테이블을 'feedback_count' 가 많은 순으로 정렬하기 위해 내림차순 정렬, 상위 3개 레코드를 출력하기 위해 LIMIT 를 사용해 결과를 출력하였다.
Q5. 평균 만족도 점수가 가장 높은 날짜를 찾는 쿼리 작성
SELECT feedback_date
FROM
(
SELECT feedback_date, AVG(satisfaction_score) avg_score
FROM lol_users
GROUP BY 1
ORDER BY 2 DESC
) sub
LIMIT 1
서브 쿼리를 통해 'feedback_date' 별 평균 만족도 점수(avg_score)가 높은 순으로 정렬된 결과 테이블을 구하고, 해당 테이블의 첫 번째(상위) 레코드의 'feedback_date' 를 출력하는 쿼리를 작성했다.
'내일배움캠프' 카테고리의 다른 글
[사전캠프] TIL 작성 - 24.08.22(목) (0) | 2024.08.22 |
---|---|
[사전캠프] 개발자들은 어떤 문화를 선호할까? (0) | 2024.08.22 |
[사전캠프] SQL 연습문제 - 6 (0) | 2024.08.22 |
[사전캠프] TIL 작성 - 24.08.21(수) (0) | 2024.08.21 |
[사전캠프] SQL 연습문제 - 5 (0) | 2024.08.20 |