본문 바로가기

반응형

SQL

(11)
조금 더 현실적인 문제해결을 위한 SQL 쿼리짜기 2탄 - R을 곁들인 코드 0. 들어가며 이 문제 유형은 한 헬스케어 회사에서 백엔드 개발자로 있는 쭈니에게 받은 문제유형이다. 쭈니는 나에게도 풀어보라고 던져준다. 현업의 문제를 간접적으로 경험하며 어떤 요청사항들을 받는지 알 수 있어 좋다 :) 진심이다. 이번에 받은 문제유형 데이터가 발생하지 않은 날짜의 데이터 집계하기 로 요약할 수 있다. 이런 유형이 어려운 유형 중 하나다. 하지만 그렇게 큰 걱정은 없다. 나에겐 구글이 있으니깐. 외쳐 갓구글 앞선 글인 https://dangdo.tistory.com/70 조금 더 현실적인 문제 해결을 위한 SQL 쿼리짜기 부제 : 8월에 한 번 구매한 고객 중 9월 달에 구매한 이력이 없는 고객은? 0. 들어가며 현실적인 비즈니스 문제를 풀기위한 쿼리는 복잡한 편이다. 그 이유 중 하나..
조금 더 현실적인 문제 해결을 위한 SQL 쿼리 - 리팩토링 하기 0. 들어가며 앞선 글에서 8월에 한 번 구매한 고객 중 9월 달에 구매한 이력이 없는 고객은? 이라는 질문에 대답을 하는 쿼리를 짰다. https://dangdo.tistory.com/70 조금 더 현실적인 문제 해결을 위한 SQL 쿼리짜기 부제 : 8월에 한 번 구매한 고객 중 9월 달에 구매한 이력이 없는 고객은? 0. 들어가며 현실적인 비즈니스 문제를 풀기위한 쿼리는 복잡한 편이다. 그 이유 중 하나는 고객을 '정밀하게' 타겟팅하 dangdo.tistory.com 이 때는 답을 내는 것에 가장 우선적인 목적을 두었다면, 이번에는 이전보다 코드의 가독성을 높이고, 보다 간단한 쿼리를 작성하는 것에 초점을 맞추었다. 1. 처음 작성한 쿼리의 구조 select b.customer_id from ( se..
조금 더 현실적인 문제 해결을 위한 SQL 쿼리짜기 부제 : 8월에 한 번 구매한 고객 중 9월 달에 구매한 이력이 없는 고객은? 0. 들어가며 현실적인 비즈니스 문제를 풀기위한 쿼리는 복잡한 편이다. 그 이유 중 하나는 고객을 '정밀하게' 타겟팅하기 위함이다. 이는 비즈니스의 '비용의 최소화, 수익의 극대화'를 위한 방법 중 하나다. 일상에서 접하는 광고유형 중 하나도 부제와 같은 맥락의 고민이 시작했다. 이전에 구매한 이력이 있지만, 더 이상 우리의 제품과 서비스를 이용하지 않는 고객을 타겟팅 한다. 고객이 우리의 제품/서비스를 잘 이용하다가, 제품/서비스 사용을 중단한 까닭을 여기선 차치하자. 왜냐면 그 이유가 너무 많기 때문에. 이 글에서는 다 못다룬다. 이유는 차치하고, 이전에 구매한 이력이 있고 더 이상 제품/서비스를 이용하지 않은 고객의 주문..
[TIL] window function partition in SQL SQL의 윈도우 펑션기능을 소개합니다. 다행히도 엑셀팡션은 아닙니다. 진짜 시작 파티션함수의 형식 SELECT 집계함수([컬럼명]) OVER (PARTITION [컬럼명]) FROM 테이블명 파티션 함수는 그룹별 집계, 순위 등을 구할 때 사용합니다. 그룹별 집계를 위해 예시 데이터를 만들고자 합니다. Postgresql을 사용했습니다. 우선 아래와 같이 테이블을 만들어봅니다. create table citizen ( id INT, sex INT, city varchar(100), region INT, primary key (id) ) 데이터를 집어 넣습니다. insert into citizen values(1,1,'서울',1) insert into citizen values(2,2,'서울',1) ins..
TestDome SQL리뷰 및 면접경험 0. 들어가며 취준을 하면서 다양한 기업 인터뷰에서 SQL 테스트를 봤다. 한국에서는 국내 코딩테스트 플랫폼으로 프로그래머스가 대동단결 된 것 같다. 프로그래머스 서비스의 UI는 익숙하지만, 문제 난이도는 회사별로 차이가 상당하다... 분석가에게 요구하는 수준이 다 다른가보다. 면접을 보았던 한 회사는 프로그래머스를 사용하지 않고 TestDome라는 사이트 링크를 전달주었다. 면접 이후 3일 이내로 풀어 제출해달라는 요청을 받았다. 프로그래머스가 아니라 신선함도 있었다. 참고로 전형은 서류검토 -> 비대면면접 & SQL 테스트 -> 최종결과 순의 프로세스를 거쳤다. 1. TestDome은 무슨 사이트인가 이번에 본 TestDome 이란 사이트는 인터뷰 중 컴퓨터활용능력/프로그래밍 실력 검증을 위한 웹솔루..
SUBSTRING(), REPLACE(), POSITION() and COALESE() SQL에는 여러 다양한 함수가 있습니다. 이번 포스팅에서는 문자열 데이터를 다루는데 유용한 함수를 소개하고자 합니다. 모든 작업은 Postgresql을 사용해 작업했습니다. SUBSTRING(), REPLACE(), POSITION() and COALESE() 위 4가지 함수입니다. 1. SUBSTRING SUBSTRING은 특정위치에 있는 문자가 무엇인지 알기위해 사용합니다. SUBSTRING을 활용해 동일한 출력을 가진 다른 표현방법을 소개합니다. SELECT SUBSTRING('THIS IS TEST SENTENCE', 1,7); SELECT SUBSTRING('THIS IS TEST SENTENCE' FROM 1 FOR 7); 위 2개의 쿼리를 실행하면 THIS IS 가 출력됩니다. SUBSTRI..
SQL 너 도대체 어떻게 공부 하는데...(경험을 중심으로) SQL 공부 어떻게 시작할지 고민하는 이들을 위해서 써보는 (주관적) 글 개인적으로는 이 글을 읽고 SQL의 활용성에 대해 충분히 이해할 수 있었다. 데이터분석을 하고 싶은 사람에게 추천한다! https://brunch.co.kr/@minu-log/5 데이터 분석, 먹고 들어가기 위한 SQL 공부법(1편) SQL, 수많은 정보에 압도당하지 않기 | 마케터의 데이터 분석 공부, 어디부터 시작해야 하나요?에서는 R이나 파이썬(Python) 등 프로그래밍 언어를 공부하기 전에 SQL부터 배워야 한다는 점을, 데이터 분석, SQL만 잘 다뤄도 먹고 들어갑니다에서는 SQL을 배워야 하는 이유를 이야기했습니다. 이번 글에서는 SQL을 어떻게 배우면 좋을지 이야기해보려 합니다. 이 글에서는 구체적인 SQL 문법 br..
SQL JOIN(FULL JOIN, CROSS JOIN, +SELF JOIN) 알아보기 FULL JOIN과 CROSS JOIN도 표를 만들어보면 이해가 쏙쏙 된다. FULL JOIN 먼저 FULL JOIN 테이블을 다음과 같이 가정하고 두 테이블의 ID를 KEY로 하여 FULL JOIN을 하면 다음과 같이 된다. 테이블명 : LEFT_TABLE ID val1 1 L1 2 L2 3 L3 4 L4 테이블명: RIGHT_TABLE ID val2 3 R3 4 R4 5 R5 6 R6 아래와 같은 쿼리문을 작성해 실행하게 되면 SELECT LEFT_TABLE.ID AS L_ID, LEFT_TABLE.VAL1 AS L_VAL, RIGHT_TABLE.ID AS R_ID, RIGHT_TABLE.VAL2 AS R_VAL FROM LEFT_TABLE FULL JOIN RIGHT_TABLE USING(ID) ;..

반응형