sql연습문제가 끝나고 본격적으로 DBeaver를 사용해서 과제를 수행하게 되었다.
하지만 그동안 강의를 다 수강했고 연습문제를 꾸준히 풀어왔다면 어렵지 않은 문제였다.
현재 매일 진행하는 sql 코딩테스트 연습의 난이도가 이번 과제보다 훨씬 어려웠기 때문에 푸는 것은 어렵지 않았다.
우선 이용자들의 정보를 조회해보자.
SELECT *
FROM users
이용자들의 데이터가 있는 user테이블을 호출했다. 우선 데이터가 어떤 형식인지 보고 싶었기 때문에 특정 열은 지정하지 않고 SELECT에 " * "을 입력했다.
name 열을 보니 익명화된 유저들의 이름이 보였다. WHERE를 이용해서 해당 열에 조건을 만족하는 데이터만 출력해보자.
SELECT *
FROM users
WHERE name LIKE('김%')
문자형 데이터에 출력조건을 설정하기 위해서 substr를 사용해도 됐지만 나에게 더 익숙한 함수는 like를 사용했다. 해당 구문을 WHERE substr(name, 1, 1) = '김'이라고 작성해도 동일한 데이터가 출력된다.
마지막으로 갯수를 세서 name_cnt라는 이름을 붙여서 출력하면 된다. SELECT절에 count를 사용하자.
SELECT COUNT(*) name_cnt
FROM users
WHERE name LIKE('김%')
이렇게 해서 정답과 같은 결과를 얻을 수 있었다.
확실히 DBeaver를 사용해서 중간과정을 알 수 있으니 문제가 더 쉽게 풀리는것같다.
원래였으면 오늘 과제는 이게 끝이지만, 너무 빨리 끝나버렸기 때문에 다른 sql문제를 풀어보기로 했다.
연습문제6) 팀 프로젝트 열심히 했으니 다시 놀아볼까요?!
- lol_users 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요! 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)
select
id,
name,
region,
rating,
join_date,
rank() over (partition by region order by rating DESC) rating_rank
from lol_users
- lol_users 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요
select name
from lol_users
order by join_date DESC
limit 1
- lol_users 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해주세요!
select *
from lol_users
order by
region,
rating DESC
- lol_users 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해주세요!
select
region,
avg(rating) avg_rating
from lol_users
group by region
'내일배움캠프' 카테고리의 다른 글
[SQL 과제] Lv3. 이용자의 포인트 조회하기 (0) | 2024.06.12 |
---|---|
[SQL 과제] Lv2. 날짜별 획득포인트 조회하기 + a (0) | 2024.06.11 |
아티클스터디 - AI가 가져올 미래는? AI 스타트업 창업가들의 말말말 (0) | 2024.06.07 |
공부하다보니 팀 프로젝트 시간이 왔어요! (0) | 2024.06.05 |
상품 주문이 들어왔으니 주문을 처리해봅시다! (0) | 2024.06.03 |