1. SQL의 필요성을 느끼다
1.1 파이썬만 열심히 공부했는데, 실무에서는 SQL을 많이 쓴다고?
취업 준비를 할 때, 현업 분에게 포트폴리오 첨삭을 받은 적이 있다. 실무에서 SQL을 굉장히 많이 쓰기 때문에 해당 스킬셋과 관련 내용을 앞 부분에 배치한 부분이 좋았다고 했다. 당시에는 '그래도 분석은 파이썬 아닌가?'일 정도로 파이썬의 세계만 접해봤기에 SQL을 실무에서 많이 쓴다는 것이 와닿지 않았다.
이제는 취직한 친구들과 만나면, SQL 활용이 생각보다 훨~씬 많다는 이야기를 한다. BI 업무에도 원하는 데이터를 가공 및 연결하기 위해 간단한 SQL 쿼리를 작성하고, 데이터 추출/전처리/필요한 집계 테이블 구성에도 SQL 쿼리를 요청하거나 작성한다.
1.2 SQL 공부를 결심한 계기
- 내가 필요한 데이터를 추출하는 SQL 쿼리는 500줄 가량이 되었다. 며칠을 해당 쿼리만 들여다보고 있어도 도무지 이해할 수가 없었다.
- 컬럼과 로우 구성이 익숙한 나에게, 피벗된 형태의 데이터 추출 요청이 들어왔다. 원하는 형태의 데이터를, 요청 시간 안에 만들기 위해서는 쿼리에 익숙해지는 것이 필요했다.
1.3 SQL 어려움을 느낀 가장 최근 사례
일별로 업데이트(batch)되는 대시보드 요청이 들어왔다. 해당 대시보드에는 4개의 데이터가 필요했다 (ex. 사용자, 주문, 매출, 배송 등). 그런데, 매번 사내 전산에서 자료를 받고 가공하면 오전 업무 시간이 날라갈 것이다. 마침 나에게는 필요한 일 있으면 쓰라고 받은 DB 집계 테이블이 3개가 있었다.
이 집계 테이블의 수치가 정확한 지 확인하기 위해서 키 값을 기준으로 연결했다. 2개의 테이블은 1:1 매칭이 되지만, 1개의 테이블은 1:1 매칭이 아니었다. ex) A테이블의 3건이 상세 항목으로 쪼개진 것이 B, C 테이블의 6건. 이 세 테이블을 연결할 때 6건처럼 concat되는 것이 아니라 18건, 36건으로 크로스 조인이 되어서 애를 먹었다.
또 1:1 매칭이 아닐 때 따로 각 데이터를 불러올 지, 집계 일부 + 나머지 테이블을 조인할 지 등을 고민하면서, SQL 지식이 조금 더 고파졌다.
2. 시도 해 본 공부 방법들
SQL은 데이터 분석 공부를 할 때 인프런에서 강의를 듣고, 해커스랭크/리트코드/solvesql 문제를 몇 개 풀어본 정도가 다인 수준이다. 따라서 원활하게 쓸 줄 아는 쿼리도 select와 group by 등 밖에 없는 초급 수준이었다.
2.1 SQLD 자격증 (합격)
면접 때 남들 다 가지고 있는 자격증이 왜 없냐는 질문을 받았다. 여전히 자격증이 필수라고 생각하지 않지만, SQL 공부를 하면서 목표가 있으면 좋을 것 같아 자격증을 취득했다. 처음 SQLD 공부할 때는, 실무에 이 지식이 소용이 있을까 의문이었다. 계속 보니 SQLD 단골 문제인 ROLLUP, GROUPING SETS, GROUPING, CUBE나 UNION과 같은 개념들은 내가 데이터를 뽑게 될 때 알고 있다면 활용할 수 있지 않을까 생각이 들었다.
■ SQLD 공부 방법
- 공부 기간은 총 3주 = 퇴근 후 (평일 3~4일, 2시간) + 주말 (1일, 4~5시간)
- SQLD 자격증은 2024년에 개편되었으므로 기출은 풀지 않았다.
- 유튜브 홍쌤의 데이터랩에서 요약본을 보면서 (카페 가입 및 구독해야 함) 개념강의를 빠르게 들었다.
- 노랭이 책을 풀면서 도무지 모르는 개념은 답을 외우는 식이 아니라, 블로그 또는 유튜브(IT 늦공 김부장, SQL 전문가 정미나, 홍쌤의 데이터랩)에 검색해가며 익혔다. 개인적으로 시험용이 아닌 SQL 개념 익히기는 김부장이 제일 잘맞았다.
- 노랭이 책 틀린 문제 부분은 접어두고 다회독했다.
- 문제를 풀다보면, JOIN, UNION / 집계(ROLLUP, CUBE, GROUPING SETS) / START WITH ~ PRIOR 등 이건 꼭 나오겠다 하는 문제가 보인다. 특히 이 개념은 이해하지 못한다면 꼭 검색해보고 익히는 식으로 공부했다.
2.2 책 - '데이터 분석을 위한 SQL 레시피'
글또(현재 참여 중인 개발자 커뮤니티)에서 멋진 분들이 해당 책으로 SQL 스터디를 하는 것을 보고 저장해두었다. 최근 구매를 했는데, 다양한 사례에 따른 SQL 쿼리를 연습해볼 수 있을 것 같다. 왜 스터디를 하며 몇 장씩 또는 몇 문제씩 풀어보는지 이해가 갔다.
2.3 강의 - 유데미 '[한글자막] 실무 활용 중심의 MySQL 부트캠프' (지원)
글또에서 유데미 강의 지원을 받았다. SQLD 시험을 치고 나서도 부실한 기초 위에 빈출 개념들만 익혀서 잘 찍고 나온 편이라, 기초 개념을 잡는데 도움이 되었다. 17.5 시간이라 언제 듣나 했는데, 한 강의 당 10분 정도로 금방 넘어가서 오히려 부담 없이 들었다. SQL 개념과 설치 방법부터 설명되어 나에겐 좋았다. (왜냐면 회사에서는 오라클을 쓰기 때문에, 개인용으로는 SQL을 어떻게 받아서 쓰는지 몰랐다.) 일대다, 다대다, 뷰, CRUD 등이 도움이 되었는데, 해당 부분들은 강의 지원 리뷰를 남기면서 자세하게 작성하려고 한다.
3. 이후 목표
1. 4개 테이블을 효율적인 형태로 구성해서 대시보드 테이블에 연결하기
2. 쿼리를 작성할 때, '어떤 목적으로, 어떤 결과물을 원하는지, 최선의 결과물 형태는 무엇인지' 고민을 하고, 문서로 남겨두기
3. SQL 레시피 2, 3분기 안에는 다 풀기
4. 500줄 쿼리 완벽하게 이해하기 (+ERD 구조)
댓글