
- RANK 함수
- 목적: 순위를 매겨줌
- 문법: RANK() OVER (ORDER BY 정렬기준 DESC/ASC)
- MAX 함수
- 목적: 최대값 구할 때 MAX 함수 활용!
집계함수라서 항목별로 구할때 LIMIT 보다 꿀🍯🐝- 문법: MAX (컬럼명)
lol_users 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요! 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)
<내 쿼리 >
SELECT name
,rating
FROM lol_users
ORDER BY rating DESC
<정답쿼리>
SELECT name
,rating
,RANK() OVER (ORDER BY rating DESC) AS lol_rank
FROM lol_users;
lol_users 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요!
SELECT name
FROM lol_users
ORDER BY join_date DESC
LIMIT 1
lol_users 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해주세요!
SELECT region
,name
FROM lol_users
ORDER BY rating DESC
GROUP BY region
* 지역별로 정렬 해야 하기 때문에 ORDER BY 에 region이랑 rating 함께 넣어줌
* 집계함수가 아니기 때문에 GROUP BY 는 필요 없음
lol_users 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해주세요!
SELECT region
,AVG(rating)
FROM lol_users
GROUP BY region
lol_feedbacks 테이블에서 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리를 작성해주세요!
SELECT *
FROM lol_feedbacks
ORDER BY satisfation_score DESC
lol_feedbacks 테이블에서 각 유저별로 최신 피드백을 찾는 쿼리를 작성해주세요!
SELECT user_name
,MAX(feedback_date)
FROM lol_feedbacks
GROUP BY user_name
** 각 유저별로 최대값을 구할 때는 SELECT 구문에 MAX 함수를 활용한다.
** ORDER BY feedback_date DESC LIMIT 1을 작동하지 않음. 유저가 다 다르기 때문에
lol_feedbacks 테이블에서 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리를 작성해주세요!
SELECT COUNT(*)
FROM lol_feedbacks
WHERE satisfaction_score = 5;
lol_feedbacks 테이블에서 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리를 작성해주세요!
SELECT user_name
,COUNT(*) AS cnt_feedback
FROM lol_feedbacks
GROUP BY user_name
ORDER BY COUNT(*) DESC
LIMIT 3
lol_feedbacks 테이블에서 평균 만족도 점수가 가장 높은 날짜를 찾는 쿼리를 작성해주세요!
SELECT feedback_dadte
,AVG(satisfacion_score)
FROM lol_feedbacks
ORDER BY AVG(satisfaction_score) DESC
LIMIT 1;