TIL. (Today I Learned)

Day6. ORDER BY / CASE WHEN 문 / TIL. 20240422

체대이터 2024. 4. 22. 21:08

데이터 분석 부트캠프 2주차 첫째날.

 

To do list.

-SQL 코드카타

-파이썬 강의 찍먹

-SQL 튜터님 강의

-데이터와 친해지는 SQL 과제


SQL 세션 2번째 강의

Mysql 마지막은 ; 으로 끝맺음

distinct 로 중복 구분 가능

조건에 따라 데이터를 구분하고 싶다 => case when 문

 

연산자

N=10 , N!=10 (N이 10 , N이 10이 아닌 값)

is NULL , is not NULL (값이 비어있는 , 값이 비어있지 않은)

 

같은 레벨의 논리연산자(AND, OR 등)를 쓸 경우에 반드시 괄호()를 쓴다

아니면 논리연산자 사이에 조건을 다써야함

 

ORDER BY 활용

컬럼 순서별로 1,2,3,4 등 표시가능

EX) ORDER BY 1,2,3

 

CTRL + 화살표

SHIFT + 화살표 => 이동

 

SHIFT + ALT =>  여러개 동시 입력

.

.

.

.

 


데이터와 친해지는 SQL 과제

 

과제를 진행함에 있어 로컬호스트서버를 정상적으로 내려받는데

오후시간을 거의 다 쓴것 같다..

 

기존 강의에 로컬 호스트 서버를 설정하는 내용이 없어 일어난 불상사 ㅠㅠ

어찌됐든 과제를 진행해봤다.

 


문제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) level 컬럼이 10 초과이고
  • 조건2) serverno컬럼이 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 etc_str2 = "시즌패스") and etc_str1 = "상점에서 구매" 
order by 1 desc ;

 


 

문제3*
ase when 구문을 사용하여 레벨구간을 아래와 같이 구분해주시고, 컬럼이름을 ‘levelgroup’ 으로 설정해주세요. game_actor_id, level, levelgroup, date컬럼을 추출해주시고, date 를 기준으로 내림차순 정렬해주세요. 결과값은 아래와 같아야 합니다. (전체결과 중 일부)
 

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 date 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 date , game_actor_id desc ;

 

 

 


Check point.

 

파이썬 강의 찍먹

- >

ctrl + s 저장 (맥은 다름)

많은 문법들은 외우는게 아니다 / 모르는 문법은 찾아보면서 해결하면 ok!

처음부터 모든 개념 / 문법에 매몰되면 안된다 / 원리만 이해하려고 하자

 

                 

 

 



회고

 

데이터 분석 강의 2주차 첫째날을 보내면서 SQL의 원리를 약간 알듯말듯하는 느낌이다.

하지만 서브쿼리문의 긴 구문들은 아직도 처음본것처럼 어렵다. 그리고 첫 SQL 강의 세션 과제를 풀어보면서 쉬운듯하면서도 시간이 많이 걸렸다. 그 이유로 마침표를 찍지 않거나 기본에 충실하지 않은채 빨리 문제를 해결하려고만 해서 오히려 잘못된 구문 작성이 빈번했다. 항상!! 기본개념과 원리를 생각하면서 문제를 풀어나가자.

 

+ 파이썬 강의를 조금 들었는데 어려운 내용까진 듣지 않아서 살짝 설렘반 기대반이다.