너무 오랜만에 블로그 글을 쓴다. 인턴 기간 동안 꾸준히 쓴다고 다짐했지만 그렇지 못했다..
하지만 오늘이 제일 빠른 날이란 말을 실천하려, 오늘부터는 일주일에 한 번씩 꼭 작성해보려 한다.
notion을 통해 기록을 정리하고는 있지만 많은 내용이 들어가다 보니 제2의 파일이 되어가고 있다. 그래서 블로그를 이용해 코테 공부와 sql 공부 내용을 차근 차근 적을 예정이다.
그리고 학교 프로젝트도 조금씩 기록해서 나중에 돌아봤을때, 도움이 되었으면 좋겠다.
인턴 기간 때 빅데이터 분석기사를 취득하고 운이 좋게도 정보처리기사 필기를 합격하여, 최근에는 정보처리기사 실기와 SQLD 시험을 응시하였다(2번째 도전인데 3번째가 될 확률이 높을 것 같다...)
해당 시험을 치면서 SQL를 학교 전공 과목과 인턴 기간에도 공부하였지만, 알고 있는 게 많이 부족하다고 생각이 크게 들었다. 그래서 정말 유명한 프로그래머스를 하루에 2개 정도 풀면서 SQL를 조금씩 공부하고, 모호했던 개념을 정리해 보았다.
sql은
" FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY "
과 같은 시행 순서를 가지고 있다.
sql의 순서상 select 를 제일 먼저 시행할 것 같지만
1. from 절에서 table을 가져온 후
2. where 문으로 조건에 맞는 필터링을 하고
3. groupby의 기준으로 각각을 그룹 함수로 만든 다음
4. having의 조건을 만족하는 행들을 필터링
5. 그 이후 select 문으로 속성(열)을 가져오고
6. 마지막으로 기준에 맞는 순차 정렬을 하는 것이다.
그래서 이 부분은 쿼리문을 작성하는데 꼭 인지하고 있어야 하고, 특히 실행 순서의 특징을 살펴보면, sql문 실행 시 선언되지 않았다는 오류(invalid identifier)를 예상할 수 있다.
해당 내용을 숙지하면서 2개 정도의 프로그래머스 문제를 풀었다.

특히 많이 헷갈렸던 부분은
date_format(열 , "형식") 함수로
날짜를 설정한 형식에 맞게 출력하는 기능을 가지고 있는데, 어떤 형식을 맞춰 주어야 원하는 결과가 나오는지 혼동이 있었다.
예를 들어

다음과 같은 datetime 형태의 열이 있을때 아래와 같은 형태로 출력하고 싶다면
DATE_FORMAT(DATETIME , "%Y-%m-%d") 를 이용해 변환된 날짜 포맷으로 출력할 수 있다.

또한 CASE WHEN THEN END 등의 CASE문을 이용하여
컬럼의 상태에 따른 다른 값을 변환하는 경우의 문제로도 해결할 수 있었다.
python의 문법에 익숙하다면 apply(lambda) 느낌과 if elif 등의 분기문과 유사하다고 본인은 이해하였다.
다음 글부터는 본격적으로 문제에 대한 글로 작성하겠다.