개발자공부일기
SQL 문법 문제(기초) Step7 본문
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
|
1.lol_feedbacks 테이블에서 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리를 작성해주세요!
내 답:
SELECT satisfaction_score
FROM lol_feedbacks
GROUP BY satisfaction_score
ORDER BY feedvack_date
Chat GPT:
SELECT user_name, satisfaction_score, feedback_date
FROM lol_feedbacks
ORDER BY satisfaction_score DESC
GROUP BY는 데이터를 그룹화할 때 사용되며, 집계 함수(예: COUNT, SUM)와 함께 사용됩니다
2.lol_feedbacks 테이블에서 각 유저별로 최신 피드백을 찾는 쿼리를 작성해주세요!
내 답:
SELECT user_name, satisfaction_score, MAX(feedback_date)
FROM lol_feedbacks
#중복을 어떻게 빼야할지 모르겠다..
Chat GPT:
SELECT user_name, satisfaction_score, feedback_date
FROM lol_feedbacks AS l1
WHERE feedback_date = (
SELECT MAX(feedback_date)
FROM lol_feedbacks AS l2
WHERE l1.user_name = l2.user_name
)
MAX() 함수를 사용하여 가장 최근의 feedback_date를 찾은 후, 그 날짜와 일치하는 피드백을 선택합니다.
3.lol_feedbacks 테이블에서 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리를 작성해주세요!
SELECT COUNT(1) cnt_of_5
FROM lol_feedbacks
WHERE satisfaction_score = 5
4.lol_feedbacks 테이블에서 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리를 작성해주세요!
내 답:
SELECT user_name,RANk() OVER (PARTITION BY user_name ORDER BY cnt_of_name) cnt_rank
FROM
(
SELECT user_name,COUNT(1) cnt_of_name
FROM lol_feedbacks
GROUP BY user_name
) a
WHERE cnt_rank <4
Chat GPT:
SELECT user_name, COUNT(*) AS feedback_count
FROM lol_feedbacks
GROUP BY user_name
ORDER BY feedback_count DESC
LIMIT 3
당신의 쿼리도 최종적으로 올바른 결과를 제공합니다. 다만, 더 효율적이고 간단하게 작성할 수 있다는 점에서 개선의 여지가 있습니다.
너무 복잡하게 생각하지 말자.
LIMIT3로 3개만 뽑을 수 있구나..
5.lol_feedbacks 테이블에서 평균 만족도 점수가 가장 높은 날짜를 찾는 쿼리를 작성해주세요!
SELECT feedback_date
FROM lol_feedbacks
GROUP BY feedback_date
ORDER BY AVG(satisfaction_score) DESC
LIMIT 1
'SQL문제 풀기' 카테고리의 다른 글
SQL 문법 문제(기초) Step9 (0) | 2024.10.24 |
---|---|
SQL 문법 문제(기초) Step8 (0) | 2024.10.22 |
SQL 문법 문제(기초) Step6 (0) | 2024.10.18 |
SQL 문법 문제(기초) Step5 (0) | 2024.10.17 |
SQL 문법 문제(기초) Step4 (0) | 2024.10.16 |