본문 바로가기

개발자가 되기위한 발걸음

웹개발 완전초보의 10일차

반응형
SMALL

안녕하세요~

오늘도 SQL을 파보았는데요~

오늘은 연산했을때 not given 같이 값이없다하는걸 없애보는걸 배워봣어요.

이걸보시면 지금 왼쪽엔 0이라되있고 오른쪽엔 null로되어있죠?

그리고 아래보시면 평균값도 왼쪽은 작고 오른쪽은 큰걸볼수있습니다.

이게이유가 왼쪽같은경우는 0도 값에 포함해서 0+0+2+3/4이런식으로 계산한것이고

오른쪽은 0을 null로만들어서 2+3/2 이렇게해서 평균값이 오른것을 볼수있습니다.

또한 이글은 값에 중간중간 null이있는 컬럼에 null이있는 데이터들을 없애달라해서

null이있는 데이터들은 뺀 값이라 생각하시면 된다고 하네요

또한 위사진은 coalesce로 age에 null로된값은 20으로 대쳐해달라고하는 글인데요

그래서 아래 null제거 글을보시면 다 20으로된걸볼수있습니다.

이번엔 데이터에 살짝이상한부분을 고치는법을 배웟는데요

예를 들어서 너무어리거나 연세가 있으신분을 최소값으로 15세미만은 15세로

80세이상은 80세로 표기되게끔 설정을 해봣습니다.

이번엔 sql로 pivot table을 만드는걸 배워봣는데요. 

위와본거같이 하면되는데요

pivot table을 깔끔하게만들어주려면 max를 써야된다고 하네요 구조를 이해하려하거나 완벽하게 파악하려면

조금 힘들다고 그냥 인식만 해놓으라는데 나중에 알려주겟죠..? 궁금하긴하네요

max 안에 if문은 시간별 주문건수를 표시해달라고 하는것인데요

그아래 괄호안을 보시면우선 food_orders를 a, payment를 b라하고 둘다 포함된 데이터만 묶어서 보여달라한후

a데이터베이스에있는 restaurant_name 컬럼을 그리고 substr을써서 b에있는 time 컬럼인데 첫번쨰부터 2번째글짜까지만 

보여달라해서 시간만,

그후 count(1)을해서서 데이터의 총갯수를 한후

where절을 사용해 시간을 15~20시만 표시해달라한것입니다.

좀복잡한거같은데 막상 그렇게 복잡한건 없더라고요.

햇갈리면 다시 복습을 해봐야겟습니다.

이번엔 윈도우 함수를 배워봣는데요 이걸배우면 업무 시작을 단축시킬수 있다고 하네요.

window() over은 윈도우함수에 늘 따라붙는거라고 합니다.

rank() over 은 내가 랭크를 정해주고싶다 이뜻이고 partition by cuisine_type은 내가음식 타입별로 랭킹을 구할게

라는 뜻이고 order by cnt_order desc는 내가 주문건수가 높은순으로 내림차순해서 랭크를 넣어줄거라고해서 

보시면 음식타입별로해서 주문건수가많은순으로 랭킹을 넣어준것입니다. 아래로내리면

위와같이 다른나라음식은 따로 랭킹을 넣은걸 보실수있습니다.

이렇게 다시 한번묶어준후 where절을사용해 랭킹 3등안에 드는 것만 보여달라 할 수도 있습니다.

 

오늘도 봐주셔서 감사합니다~ 

반응형
LIST