sql

group by()

148june 2025. 1. 22. 16:52

 

아래와 같은 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

 

lol_feedbacks 테이블에서 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리를 작성해주세요!

  • 정답
  • SELECT id, user_name, satisfaction_score, feedback_date FROM lol_feedbacks ORDER BY satisfaction_score DESC;

lol_feedbacks 테이블에서 각 유저별로 최신 피드백을 찾는 쿼리를 작성해주세요!

  • 정답
  • SELECT user_name, MAX(feedback_date) FROM lol_feedbacks GROUP BY user_name;

 

lol_feedbacks 테이블에서 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리를 작성해주세요!

  • 정답
  • SELECT COUNT(*) FROM lol_feedbacks WHERE satisfaction_score = 5;

수를 계산하는걸 생각해야한다. 그래서 count가 들어가게된다.

lol_feedbacks 테이블에서 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리를 작성해주세요!

  • 정답
  • SELECT user_name, COUNT(*) AS feedback_count FROM lol_feedbacks GROUP BY user_name ORDER BY feedback_count DESC LIMIT 3;

group by 카테고리컬럼(원하는컬럼 아무거나)

그리고 상위 3명까지 원하니 이번에는 3으로 확인하면된다.

lol_feedbacks 테이블에서 평균 만족도 점수가 가장 높은 날짜를 찾는 쿼리를 작성해주세요!

  • 정답
  • SELECT feedback_date FROM lol_feedbacks GROUP BY feedback_date ORDER BY AVG(satisfaction_score) DESC LIMIT 1;

평균에 값을 내림차순하고 맨처음에나온 값이 제일높으니 limit 1

'sql' 카테고리의 다른 글

* count() date_sub()  (0) 2025.01.23
date_sub date_add  (0) 2025.01.22
ORDER BY DESC LIMIT 1 , AVG()  (0) 2025.01.22
CURDATE() DATEDIFF() AS  (0) 2025.01.22
<> IN  (0) 2025.01.22