21) lol_users 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요! 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)
select *,
rank() over (order by rating desc) ranking
from lol_users
22) lol_users 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요
select name,
join_date
from
(
select name,
join_date,
rank() over (order by join_date desc) Newbie
from
(
select name,
join_date
from lol_users
) a
) b
where Newbie=1
맨 위 select 줄에 Newbie를 안적어 조회 테이블에 안나오게 진행
Limit 를 사용해서 할수도 있지만 배운걸로 하고 싶어서 rank와 Subquary사용
23) lol_users 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해주세요!select *
from lol_users
order by region , rating
[정렬 순위 1. 지역 2. 점수]
24) lol_users 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해주세요!
select region,
avg(rating) region_avg_rating
from lol_users
group by region
[지역 조회, 점수로 평균계산, group by:원하는 단위, 즉 지역 단위로 평균 계산]
25) lol_feedbacks 테이블에서 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리를 작성해주세요!
select *
from lol_feedbacks
order by satisfaction_score desc
26) lol_feedbacks 테이블에서 각 유저별로 최신 피드백을 찾는 쿼리를 작성해주세요!
select user_name,
max(feedback_date) Latest_feedback
from
(
select *
from lol_feedbacks
order by user_name
) a
group by user_name
[max를 사용해 최근날짜 선정]
27) lol_feedbacks 테이블에서 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리를 작성해주세요!
select count(satisfaction_score) count_of_max_score
from
(
select *
from lol_feedbacks
where satisfaction_score = 5
) a
28) lol_feedbacks 테이블에서 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리를 작성해주세요!
select user_name,
feedback_count,
most_feedback_user as "피드백 상위 3"
from
(
select user_name,
feedback_count,
rank() over (order by feedback_count desc) most_feedback_user
from
(
select user_name,
count(user_name) feedback_count
from lol_feedbacks
group by user_name
order by user_name
) a
) b
where most_feedback_user <= 3
[Limit걸어서 강제로 3명을 끊을 수 있지만 동점자가 다수여서 동점자 모두 포함하기 위해 rank사용]
--맨 아래 수를 2로해도 전부 표시됨--
ps.
이거 할려고 시간 다날림..
29) lol_feedbacks 테이블에서 평균 만족도 점수가 가장 높은 날짜를 찾는 쿼리를 작성해주세요!
select feedback_date,
avg_score
from
(
select feedback_date,
rank() over (order by avg_score desc) high_score_date,
avg_score
from
(
select feedback_date,
avg(satisfaction_score) as avg_score
from lol_feedbacks
group by feedback_date
) a
) b
where high_score_date = 1
[이것도 Limit사용가능 안하고 싶으면 rank사용]
최대한 배운걸로 진행하려고 노력했다.
오래걸렸지만 그래도 한계까지 끌고가서 푼것 같은 느낌을 받아서 좋았고 재밌었다.
'내일배움캠프 > 사전캠프 퀘스트' 카테고리의 다른 글
[내일배움캠프]_달리기반 1-3 (0) | 2024.12.04 |
---|---|
[내일배움캠프]_사전캠 SQL 퀘스트 5일차 (0) | 2024.12.04 |
[내일배움캠프]_사전캠 SQL 퀘스트 4일차 (0) | 2024.12.02 |
[내일배움캠프]_사전캠 SQL 퀘스트 3일차 (0) | 2024.12.02 |
[내일배움캠프]_사전캠 SQL 퀘스트 1일차 (0) | 2024.11.28 |