SQL 코딩테스트 cheat sheet !
·
데이터 엔지니어링/SQL
SQL 코딩테스트에서 문자열이 출시되면 주로 나오는 것들, 알아야 하는 함수들, 풀어봤던 문제들 리스트업하는 포스팅이다. 코테가 참 야속한 것이 실무에서 내가 쓰는 것만 쓰다 보면 몇 달 전만 해도 코테에서 너무 쉽게 풀었던 것들인데 다시 봤을 땐 생소해서 가끔 이렇게 복습이 필요하다.. !! 조건 걸 땐 WHERE ~ IN / NOT IN 파이썬의 IN 과 굉장히 유사하다. 조건 여러개 걸때 유용! *참조: 프로그래머스 "대여 횟수가 많은 자동차들의 월별 대여 횟수" --틀린 답 SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(HISTORY_ID) AS RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE start_dat..
[SQL] 변화하는 유저 DB 관리, 어떤 sql 문법을 써야할까? (feat. SCD)
·
데이터 엔지니어링/SQL
유저 DB, 경영정보 테이블 등 변동이 심한 DB 는 어떻게 관리하면 좋을까? 예를 들어, 어떤 회사의 A 직원이 개발팀에서 근무하다 마케팅팀으로 옮겼다면? DB 정보를 업데이트하고 지우기 위해서 단순히 INSERT INTO 라던지 DELETE 구문을 이용해 개발팀_table 과 마케팅팀_table 의 DB 를 수정한다면 인원이 늘어남에 따라 관리가 복잡해짐은 물론이며, 과거의 데이터를 트래킹하기 어렵다는 치명적인 한계가 있다. 이럴 때 사용하는 SQL 로직으로 SCD (Slowly Changing Dimension).. 라는 녀석이 있다. 데이터 엔지니어링 분야에서 자주 쓰이는 로직과 문법인데, SCD type 1 - 6 까지 경우에 따라 다양하게 적용할 수 있다. 지금부터 SCD 로직을 적용하는 경우..
[DE] SQL 에서 틀린 데이터 갈아끼우기 (update, upsert)
·
데이터 엔지니어링/SQL
데이터를 다루다 보면 과거의 데이터를 수정할 일이 생긴다. 에어플로우에서 이 작업을 할 수 있게 도와주는걸 backfill 이라 부르고 catchup 기능으로 이걸 구현할 수 있는데, DB 를 직접 sql 구문을 이용해 수정하기도 한다. 이때 사용되는 몇가지 sql 구문들을 살펴보자 1. upsert 방법 upsert 는 말 그대로 update + insert 방법이다. 스키마의 key 값을 검사해 중복이 있다면 업데이트, 중복이 없다면 insert 를 해주는 방법인데, 이 문법으로 구현할 수 있다 INSERT INTO [TABLE] #업데이트 할 테이블 ( [COLUMN1] #업데이트 할 컬럼 , [COLUMN2] , [COLUMN3] ) VALUES ( [VALUE1] #업데이트 될 값 , [VALU..
[SQL] 그룹별로 상위 n 개 구하기
·
데이터 엔지니어링/SQL
union 을 쓰는 방법도 있지만 rank 가 가장 직관적인 듯 하다 chatbot_name 별로 sum_heart_price가 가장 높은 유저 5개를 고를 것임 편의를 위해 먼저 FROM 절을 이용해 heart_price 의 합계별로 랭킹이 계산된 ranked_data 를 생성한 뒤 SELECT 절을 이용해 출력에 필요한 것들을 선택해 주고 5개 출력 랭킹 조건을 추가합니다 SELECT chatbot_name, user_seq, sum_heart_price, rank FROM ( SELECT chatbot_name, user_seq, SUM(heart_price) AS sum_heart_price, RANK() OVER (PARTITION BY chatbot_name ORDER BY SUM(heart_..
허니비 honeybee
'데이터 엔지니어링/SQL' 카테고리의 글 목록