MySQL 3

프로그래머스 SQL 코딩테스트 후기

(주의) 기출 문제 정보는 없습니다. 그냥 처음 보면서 느낀점들, 이후에 볼 때 주의할 사항들에 대해 적었습니다. 준비과정 우선 첫번째로 프로그래머스 내 제공해주는 기출문제를 풀어봤다. 기출문제를 풀었던 것은 문법간 차이를 미리 이해하기 위함이었다. 이전 회사는 Google Bigquery 기반의 SQL을 활용했고, 지금 회사는 Clickhouse 기반의 SQL을 활용했다. Bigquery에서 Clickhouse로 넘어올 때, 굵직한 문법은 비슷했지만 간혹 조금씩 차이가 있는 경우가 있었다. 그런 경험 때문에 시험 때 응시할 MYSQL이 지금 회사의 문법과 차이가 있을 것을 우려해서 프로그래머스에서 제공하는 문제를 미리 풀어봤다. 결과적으로 매우 잘한 일이었다. 프로그래머스에서 제공하는 연습문제를 풀자마..

잡상들 2023.02.18

sum over, 일별 진척율 대비 YoY 구하기 (1) (sum over의 개념 등)

휴가 중 문의를 받았다. 2022년 12월의 일별 누적거래액 차트를 만들고 싶어요. 아 물론 2021년 12월 1일부터 동기간 YoY를 비교하는 형태가 가능하면 좋을 것 같아요. 문과로 태어난 나의 정체성을 유지하고 싶었지만, 엔지니어의 기운이 스며든 것인지 기존에 시도하지 않았던 요청이 오면 게임하는 것만큼 흥미로운 것 같다. 요청 내용을 처리해보자. 일별 진척율을 왜 보고 있을까 우선 이런 것을 왜 구하는지 먼저 살펴보자. 비즈니스 분석팀은 매번 월말 기준 예측치를 산출한다. 이번달 예측치는 140점으로 예상 YoY는 40%가 나올 것 같아요. 이후 분석팀은 비즈니스 지표를 모니터링하게 된다. 물론 찐 엔지니어 성격의 데이터 분석팀은 이를 하지 않는 것 같다. 우리처럼 전략기획팀 한 스푼 묻은 데이터..

[SQL/Clickhouse] LIMIT n BY, 그룹별/조건별로 필요한 수만큼 추출하기

조건에 따른 상위랭커를 뽑아보려면 처음에 SQL을 배우면 가장 먼저 배우는 것 중 하나가 LIMIT문이다. 그래서 처음에 RANK와 같은 순위 함수를 모르더라도, '거래액 순으로 상위 10개를 뽑아주세요'라는 요청을 받으면 어렵지 않게 출력할 수 있을 것이다. 다만, 가끔 전체가 아닌 그룹별로 뽑아야하는 경우가 발생할 수 있다. "우리 고객사들을 카테고리별로 거래액 상위 10개 몰을 추출해주세요." 이런 경우, 초보인 경우는 WHERE에다가 카테고리 이름을 하나씩 쓰면서, 발품을 파는 경우가 많다. (어떻게 확신하듯 작성하냐면, 내가 맨 처음에 그랬던 것 같다.) 그렇다면 어떻게 해야할까? 나중에 쿼리를 공부하면서 알게 된 방법은 크게 2가지가 있다. 하나는 RANK를 활용하는 것이고, 또 하나는 LIM..