[사전캠프] SQL 연습문제 - 6
2024. 8. 22. 00:11ㆍ내일배움캠프
문제 :아래의 테이블을 참고해 문제 해결을 위한 SQL 문을 작성하자.
id | name | region | rating | join_date |
1 | 르탄이 | 한국 | 1300 | 2019-06-15 |
2 | 배캠이 | 미국 | 1500 | 2020-09-01 |
3 | 구구이 | 한국 | 1400 | 2021-01-07 |
4 | 이션이 | 미국 | 1350 | 2019-11-15 |
[lol_users(LOL 유저) 테이블]
Q1. 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성한다. 전체 지역(region) 기준으로 순위는 레이팅이 높을 수록 높아야한다.
SELECT name,
RANK() OVER (ORDER BY rating DESC) ranking
FROM lol_users
각 유저에 대한 순위란 말만 있어 각 유저의 이름(name)에 해당하는 순위를 내림차순으로 매긴 결과를 조회하는 쿼리를 작성하였다.
Q2. 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성
SELECT name
FROM lol_users
ORDER BY join_date DESC
LIMIT 1
시작 일(join_date) 을 내림차순으로 정렬하면 맨 위 레코드가 가장 늦게 시작한 유저의 데이터를 가진 레코드일 것이다. SELECT 를 통해 유저의 이름(name) 만 선택하고 LIMIT 를 통해 상단 첫 번째 레코드만 조회한다.
Q3. 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성
SELECT region, name, rating
FROM lol_users
ORDER BY 1, 3 DESC
ORDER BY 를 통해 1순위로 'region` 을 오름차순 정렬해 지역별로 정렬되게하고 2순위로 'rating' 을 내림차순 정렬해 높은 레이팅을 가진 유저를 위로 정렬했다.
Q4. 지역별로 평균 레이팅을 계산하는 쿼리 작성
SELECT region, AVG(rating) avg_rating
FROM lol_users
GROUP BY 1
'region' 컬럼을 그룹화, 그룹별 레코드들의 'rating' 값 평균을 'AVG' 로 연산해 'avg_rating' 컬럼에 출력하는 쿼리를 작성했다.
'내일배움캠프' 카테고리의 다른 글
[사전캠프] 개발자들은 어떤 문화를 선호할까? (0) | 2024.08.22 |
---|---|
[사전캠프] SQL 연습문제 - 7 (0) | 2024.08.22 |
[사전캠프] TIL 작성 - 24.08.21(수) (0) | 2024.08.21 |
[사전캠프] SQL 연습문제 - 5 (0) | 2024.08.20 |
[사전캠프] TIL 작성 - 24.08.20(화) (0) | 2024.08.20 |