백엔드 부트캠프[사전캠프]/문제풀이

[내일배움캠프-사전캠프] SQL 단계별 문제 풀이

sintory-04 2025. 1. 19. 20:41

 

[6단계] 팀 프로젝트 열심히 했으니 다시 놀아볼까요?!

21. lol_users 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요! 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)

** 순위에 대한 함수 RANK 는 윈도우 내장 함수이다. PARTITION은 그룹화 하는 것이다. ORDER BY는 정렬할 COL을 정하는 것이다. PARTITION은 COL 값 별로 순위를 매기는 것이라고 생각하면 쉽다.

RANK() OVER (PARTITION BY COL1 ORDER BY CO1 [ASC/DESC])

무엇을? RANK 된 열을

어디에서? lol_users에서

SELECT *, RANK() OVER(ORDER BY rating DESC) AS rank
FROM lol_users

 

22. lol_users 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요

무엇을? 유저의 이름

어디에서? lol_users

조건은? 가장 게임을 늦게 시작 => join_date 값이 가장 낮은 열.

2가지 방법이 있다.  하나는 서브쿼리를 이용하는 것, 다른 하나는 LIMIT(TOP )를 이용하는 것이다.

// 서브 쿼리 사용
SELECT *
FROM lol_users
WHERE join_date = (SELECT max(join_date)
		FROM lol_users)
// ORDER BY 사용        
SELECT *
FROM lol_users
ORDER BY join_date DESC
LIMIT 1

23. lol_users 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해주세요!

무엇을? 유저들

어디에서? lol_users 테이블에서

순서 ? 지역별로. 레이팅 높은순.

//23 
SELECT *
FROM lol_users
ORDER BY region, rating DESC

24. lol_users 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해주세요!

무엇을? 평균을

어디에서? lol_users에서 

조건은? region을 group by 해서. 그룹핑!

SELECT region, AVG(region)
FROM lol_users
GROUP BY region

 

일요일은 여기서 끝 : >