본문 바로가기
개발일지

[내일배움단] SQL 데이터분석 강의 1주차 (feat.스파르타코딩클럽)

by 창조하는 인간 2022. 7. 31.

예전에 스파르타코딩클럽에서 앱개발 종합반을 수강한 적이 있다. 

회사를 다니고 있었고, 생각보다 야근이 많았어서 주말에 몰아치듯 들어야 했는데, 

지금까지 내가 들었던 인강중에서 유일하게 완강을 했던 거라 기억에 남았다. 

 

스파르타코딩클럽 내일배움단 SQL 데이터 분석 1주차

 

이번에는 내일배움카드를 활용해서 디지털 역량을 좀 키워보고자 SQL 데이터 분석이라는 생소한 분야의 강의를 신청해보았다. 

분량이 많지 않고, 소분화 되어있어서 재미있게 접근할 수 있는 것 같다. 

물론, 1주차라서 그런 것일 수도 있다.. 

 

코딩에 관심이 많지만, 수학과는 담쌓았던 시절이 있기 때문에 주춤하던 문과생이었는데 

이렇게나마 배우니까 조금 더 흥미가 생기는것 같다. 

 

다른 교육 플랫폼에서 파이썬 강의도 듣고 있는데, 계속해봐야 늘 거라서.. 

요즘 교육에 쓰는 돈이 얼마인지 대체...

입력만 되면 되는게 아니라 출력이 잘 되어야 그 교육이 성공적이었다 말할 수 있지 않을까. 

이번에는 써먹을수 있을 정도로 착실하게 배움에 임하겠다고 결심했다. 

 

스파르타코딩클럽은 꽤 친절하게 알림 문자를 주고 전화도 줬던 것 같다.. 예전엔.. 

안 할 수가 없게 만드는 말 그대로 스파르타 같은 곳이라는 기억이 새록새록 ㅋㅋㅋㅋ

 

생산적인 것을 하고 싶고, 창작활동에 제약을 받고 싶지 않아서

코딩을 배워야겠다고 생각한 이상한 맥락이지만 

어쨌든 시작을 했으니 끝을 보고 싶다. 

 

오늘 배운 부분은 DBeaver 프로그램을 이용해서 데이터를 내가 원하는 방식으로 읽는 문법의 일부이다. 

select와 where 구문이었고 그 외 다른 문법도 살짝 배웠다. 

 

옆에 보면 오류가 무수히...

 

까먹지 않기 위해서 메모하면서 들었는데, 

역시 실제로 여러번 해보는 것이 좋을 듯하다. 

 

안 그랬다가는 마치 영어단어처럼 외우면 잊어버리고 외우면 잊어버리는 금붕어가 될 수도 있을 것 같다.. 

 

길게 쓰는 건 아니었고, 

이게 어떤 문법을 쓰면 될지 조건문을 읽고 이해하고 알맞은 문법을 써서 데이터를 도출하면 되는 거라 

수학 문제를 다시 만난 느낌 ㅋㅋㅋ 물론 수학보단 훨씬 쉽다 ㅋㅋㅋ 

 

메모장에 메모한 내용을 그대로 복붙.. 

앞으로 일지를 위해서라도 계속 기록하면서 수업을 들을 예정이다. 

 

나름대로 풀어서 쓰긴 했는데 나중에 읽었을 때 알아먹으려나 모르겠다. 

더보기

Select, where 과 그 외 문법 

 

Select 는 테이블의 범위를 말한다. 

전체를 보고 싶을때는 *라고 쓰면 된다. 

일부분을 보고 싶을 때는 보고 싶은 필드명을 쓴다. 

 

뒤에 어디서 데이터를 가져오는지 써줘야 하는데
from이라고 쓰고 데이터 테이블 명을 쓴다. 

 

Select * from orders  라고 하면 전체 테이블에서 orders 데이터를 가지고 오라는 명령문이 된다. 

 

where는 가지고 온 데이터 테이블 내에 어떤 필드를 보고 싶은지 명령할 때 쓰는 것이다. 

 

가령 카카오페이를 쓰는 회원들만 모아서 보고 싶다면, 

 

Select * from orders 

Where payment_method  = ‘kakaopay’ 

 

라고 하면 카카오 페이를 통해 결제한 회원들의 명단만을 보여준다

 

DBeaver 를 실행시킬 때는 ctrl + enter를 눌러준다. 

 

숫자에는 작은 따옴표를 쓰지 않는다. 

문자열에는 작은따옴표를 반드시 써야 한다.

 

!= 는 제외하고 데이터를 뽑을 때 쓰며,  (같지않음 구문)

Between 은 범위를 걸 때 쓴다. 

 

And를 같이 쓴다. 

 

select * from orders

where created_at between "2020-07-13" and "2020-07-15";

 

이런 식으로.

 

포함은 괄호를 쓴다. Week 가 1 또는 3인 것을 가져오라는 명령문 

select * from checkins 

where week in (1, 3);

 

패턴 문자열 규칙 조건 은 

 

Like  문법을 쓴다. Like 뒤에는 등호가 오지 않아.. 등호를 써야 할 곳은 따로 외운다 

 

 

다음 이메일을 쓰는 유저들을 보고 싶다면, 

 

select * from users 

where email like '%daum.net';

 

이때 % 는 그 앞에 어떤 단어가 오는지 상관없다는 것이다. 앞에 뭐가 있던 간에 daum.net으로 끝나는 데이터를 보여준다. 

 

a로 시작해서 t로 끝나고 다음 이메일이라면 

 

Where email like ‘a% t’이라고 하면 된다. 

 

 

결제수단이  CARD가 아닌 주문 데이터만 추출해보기 

select * from orders

where payment_method !='CARD'

 

20000~30000 포인트 보유하고 있는 유저만 추출해보기

select * from point_users

where point between 20000 and 30000

 

이메일이 s로 시작하고 com로 끝나는 유저만 추출해보기 

select * from users

where email like 'S%com'

 

이메일이 s로 시작하고 com으로 끝나면서 성이 이 씨인 유저만 추출해보기 

select * from users

where email like 's%com' and name like '이**'

혹은 

select * from users

where email like 's%com' and name = '이**'

 

 

그 외 문법 

 

일부 데이터만 가져오기 : limit
중복 데이터는 제외하고 가져오기 : Distinct 

몇 개인지 숫자 세보기 : Count 

 

Distinct와 같이 써본다면? 

 

 

limit의 경우 정말 방대한 데이터를 조회할 때 다 검색해볼 수 없으므로 한계를 지어 데이터수를 제한하는 명령어이다 

 

예를 들면,

select * from orders

where payment_method = 'kakaopay'

limit 5

 

카카오페이를 쓰는 유저가 상당히 많은데 나는 그중에서 5명만 보겠다고 하는 명령어이다. 

 

Distinct의 경우 말 그대로 중복 데이터를 제거해주고 보여주는데 이는  select 뒤에 쓴다.  

 

Select payment_method from orders라고 하면 

payment_method 필드의 모든 항을 보여주는데 양이 많고 수가 많다 

이것들 중 종류가 다른 게 몇 개인지 일일이 셀 수 없으므로 distinct를 걸어서 반드시 필드명은 괄호로 정리해준다.

 

select distinct (payment_method)  from orders 

 

카카오페이, 카드, 현금 이런 식으로 굵직하게 몇 개의 항목이 있는지 확인이 가능하다. 

 

count는 숫자를 세는 것인데 앞서 말한 방대한 데이터의 수를 일일이 셀 수 없으므로 

컴퓨터가 세어주길 요청하는 명령문이다. 

 

Count 도 select  뒤에 쓰는 구문으로 괄호로 *를 감싸 정리한다.

 

select count(*)  from orders 

 

Orders 데이터 테이블 안에 있는 모든 것들의 숫자를 세어준다. 

 

그중 카카오페이로 결제한 사람들의 수만 보고 싶을 경우에는 

 

select count(*)  from orders 

where payment_method  ='kakaopay'

 

라고 쓰면 된다. 

 

 

distinct와 count를 같이 쓴다면? 

 

select count(distinct (name)) from users

users에 있는 회원 이름 필드 (name)만을 보되 그 숫자를 세어보고 싶다는 말이다. 

 

Count 가 앞에 오고 괄호로 정리해주고 그다음 distinct가 오고 필드명을 괄호로 정리해준다. 

 

띄어쓰기에 민감하므로 결괏값이 뜨지 않을 때는 띄어쓰기에도 유의하자. 

 

 

 

 

퀴즈 풀어보기 

 

  1. 성이 남씨인 유저의 이메일만 추출하기 

 

select email from users

where name = '남**'

 

  1. Gmail 을 사용하는 2020/07/12~13일에 가입한 유저를 추출하기 

select * from users

where email like '%gmail.com' 

and created_at between "2020-07-11" and "2020-07-14"

 

  1. Gmail을 사용하는 2020/07/12~13일에 가입한 유저의 수를 세기 

select count(*) from users

where email like '%gmail.com' 

and created_at between "2020-07-11" and "2020-07-14"

 

 

 

숙제 

 

Naver 이메일을 사용하면서, 웹 개발 종합반을 신청했고, 결제는 kakaopay로 이뤄진 주문 데이터 추출하기 

 

select * from orders

where email like '%naver.com' 

and course_title like '웹개발 종합반'

and payment_method = 'kakaopay'

 

댓글