1. 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요! 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)
# 1
select *
from practice6
order by rating desc
처음에는 이런식으로 rating을 기준으로 순서대로 나열만 했다가, 순위를 부여해 주고 싶어서 다른 쿼리를 짰다.
#2
select *, rank() over(order by rating desc) as "rank"
from practice6
순위를 부여하는 칼럼을 만들때 사용하는 함수
-> ROW_NUMBER(), RANK(), DENSE_RANK()를 OVER과 사용
0. OVER 안에는 순위를 결정하는 기준이 들어간다.
1. ROW_NUMBER() : 동일한 값을 가져도 다른 순위 부여
2. RANK() : 동일한 값에 같은 순위 & 다음 순위를 건너뜀 (EX: 공동2등 다음에 4등)
3. DENSE_RANK() : 동일한 값에 같은 순위 & 다음 순위를 건너뛰지 않음
+) 예전엔 몰랐는데 다시 보니까 window function 이네. 자세한 내용은 window function 포스팅 참고.
2. 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요!
select name
from practice6
order by join_date desc
limit 1
3. 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해주세요!
select *
from practice6
order by region, rating desc
4. 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해주세요!
select region, avg(rating)
from practice6
group by region
'문제풀이 > 스파르타 - sql 문제' 카테고리의 다른 글
[사전캠프] SQL 연습문제(5) (0) | 2024.06.14 |
---|---|
[사전캠프] SQL 과제| Lv1. 데이터 속 김서방 찾기 (0) | 2024.06.12 |
[사전캠프] SQL 연습문제(4) (0) | 2024.06.04 |
[사전캠프] SQL 연습문제(3) (0) | 2024.06.03 |
[사전캠프] SQL 연습문제(2) (0) | 2024.05.31 |