내배캠(개인과제)/SQL

[라이브세션] 데이터와 친해지는 SQL 1회차

신짜린 2024. 6. 27. 17:05

문제 1

 date 컬럼이 2023-01-01 보다 큰 날짜의 game_account_id, game_actor_id, serverno를 추출해주세요.

select game_account_id
	, game_actor_id
	, serverno
from users
where date > '2023-01-01'

 

문제 2

 조건1) leverl 컬럼이 10초과이고

 조건2) severno컬럼이 1이 아니며

 조건3) 아이템 이름 컬럼이 레벨업 패키지 또는 시즌패스이고

 조건4) 아이템 획득경로가 상점에서 구매한 경우

 date, ip_addr, exp, zone_id 를 추출하고 결과값을 date 기준 내림차순으로 정렬하여 추출해주세요.

select date
	, ip_addr
	, exp
	, zone_id
from users
where level > 10
	and serverno != 1
	and etc_str2 = '레벨업 패키지' or '시즌패스'
	and etc_str1 = '상점에서 구매'
order by date desc

 

문제3

 case when 구문을 사용하여 레벨구간을 아래와 같이 구분해주시고, 컬럼이름을 'levelgroup'으로 설정해주세요.   game_actor_id, level, levelgroup, date 컬럼을 추출해주시고, date를 기준으로 내림차순 정렬해주세요. 결과값은 아래와 같아야 합니다.

전체 결과 중 일부

 레벨구간 1~10Lv 이하/ 11~20Lv 이하/ 21~30Lv 이하 /31~40Lv 이하/ 41~50Lv 이하/ 51~60Lv 이하/ 61~70Lv 이하/ 71~80Lv 이하/ 81~90Lv 이하/ 91~100Lv

select game_actor_id
	, level
	, case when level between 1 and 10 then '1~10Lv'
		when level between 11 and 20 then '11~20Lv'
		when level between 21 and 30 then '21~30Lv'
		when level between 31 and 40 then '31~40Lv'
		when level between 41 and 50 then '41~50Lv'
		when level between 51 and 60 then '51~60Lv'
		when level between 61 and 70 then '61~70Lv'
		when level between 71 and 80 then '71~80Lv'
		when level between 81 and 90 then '81~90Lv'
		when level between 91 and 100 then '91~100Lv' end levelgroup
	, date 
from users
order by 4 desc

 

문제4

 date 컬럼을 yyyy-mm 형식의 월 형태로 바꾸고, 컬럼이름을 m 으로 지정해주세요.

 game_account_id, game_actor_id 를 추출하되, 월을 기준으로 오름차순, 월이 같을 경우 game_actor_id 를 내림차순으로 정렬해주세요. 결과값은 아래와 같아 야 합니다.

전체 결과 중 일부

select date_format(date, '%Y-%m') m
	, game_account_id
	, game_actor_id
from users
order by m
	, game_actor_id desc