본문 바로가기
TIL

[TIL] 241110

by 좌우지간에 2024. 11. 10.

SQL강의

    1. Subquery 가 필요한 경우
    • 여러번의 연산을 수행해야 할 때</aside>
    • <aside> ☝ → 수수료를 부과할 수 있는 시간을 구하고 → 구해진 시간에 주문 금액별로 가중치를 주고 → 가중치를 적용한 결과로 최종 예상 배달비를 계산할 때
    • 조건문에 연산 결과를 사용해야 할 때</aside>
    • <aside> ☝ → 음식 타입별 평균 음식 주문금액 따라 음식비 상/중/하 를 나누고 싶을 때
    • 조건에 Query 결과를 사용하고 싶을 때</aside>
    • <aside> ☝ → 30대 이상이 주문한 결과만 조회하고 싶을 때

 

 

퀘스트풀이

 

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

#1. **`lol_users`** 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요! 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)
select name,
	     rating,
	     rank() over (order by rating desc) as '순위'
from lol_users
; 

#2. **`lol_users`** 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요
select name
from lol_users
order by join_date desc
limit 1
; 

select name
from lol_users
where join_date = (select max(join_date))
; 


#3. **`lol_users`** 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해주세요!
select *
from lol_users
order by region, rating desc
;
	   

#4. **`lol_users`** 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해주세요!
select region,
	     avg(rating) '평균 레이팅'
FROM lol_users
GROUP BY region
;

 

7) 랭크게임 하다가 싸워서 피드백 남겼어요…

#1. **`lol_feedbacks`** 테이블에서 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리를 작성해주세요!
SELECT *
FROM lol_feedbacks
ORDER BY satisfaction_score DESC
;


#2. **`lol_feedbacks`** 테이블에서 각 유저별로 최신 피드백을 찾는 쿼리를 작성해주세요!
SELECT user_name,
			 MAX(feedback_date)
FROM lol_feedbacks
GROUP BY user_name
;


#3. **`lol_feedbacks`** 테이블에서 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리를 작성해주세요!
SELECT count(1)
FROM lol_feedbacks
WHERE satisfaction_score = 5
;


#4. **`lol_feedbacks`** 테이블에서 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리를 작성해주세요!
SELECT user_name,
			 count(*) feedback_count
FROM lol_feedbacks
GROUP BY user_name
ORDER BY feedback_count DESC
LIMIT 3
;



#5. **`lol_feedbacks`** 테이블에서 평균 만족도 점수가 가장 높은 날짜를 찾는 쿼리를 작성해주세요!
SELECT feedback_date
			 avg(satisfaction_score)
FROM lol_feedbacks
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1
;

'TIL' 카테고리의 다른 글

[TIL] 241112  (2) 2024.11.12
[TIL] 241111  (1) 2024.11.11
[TIL] 241109  (1) 2024.11.09
[TIL] 241108  (2) 2024.11.08
[TIL] 241105  (3) 2024.11.05