IT공부/SQL
[스파르타 사전캠프] SQL걷기반 문제6
Johnnnn
2025. 2. 5. 16:56
728x90
6) 팀 프로젝트 열심히 했으니 다시 놀아볼까요?!
아래와 같은 lol_users(LOL 유저 테이블)이 있습니다.
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
|
21.
lol_users 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요! 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)
SELECT name, rating, ROW_NUMBER() OVER (ORDER BY rating DESC) AS rank FROM lol_users;
// ROW_NUMBER(): 유저들을 rating 기준으로 내림차순으로 정렬하고 각 유저에게 순위를 부여합니다. 레이팅이 높은 유저일수록 높은 순위를 받게 됩니다..
// OVER (ORDER BY rating DESC): rating을 내림차순으로 정렬하여 순위를 계산합니다.
// rank: 순위 값을 rank라는 이름으로 출력합니다.
22.
lol_users 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요
SELECT name FROM lol_users ORDER BY join_date DESC LIMIT 1;
// where절은 특정 조건을 만족하는 데이터를 필터링하는 데 사용되기 때문에 사용할 수 없고,
// order by 를 통해 정렬하고 limit로 하나의 데이터를 추출할 수 있다.
// DESC는 정렬 순서를 지정하는 키워드로, 내림차순 (Descending Order) 을 의미한다.
23.
lol_users 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해주세요!
SELECT name, region, rating
FROM lol_users
ORDER BY region ASC, rating DESC;
// ORDER BY region ASC: region을 기준으로 오름차순 정렬합니다. 지역 이름이 알파벳 순으로 정렬됩니다.
// rating DESC: rating을 기준으로 내림차순 정렬합니다. 즉, 레이팅이 높은 유저가 먼저 나옵니다.
24.
lol_users 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해주세요!
select region, avg(rating) from lol_users group by region;
// avg() 함수는 컬럼의 자료형이 숫자 일때만 사용가능.
// group by 절은 주로 집계 함수와 같이 사용된다.
//집계 함수
1. count() : 행의 개수를 세어줌
2. avg() : 행 안에 있는 값의 평균은 내어줌
3. min() : 행 안에 있는 값의 최소값을 반환해줌
4. max() : 행 안에 있는 값의 최대값을 반환해줌
5. sum() : 행 안에 있는 값의 합을 내어줌