*** SQL 오답노트(인사이트)

dorongpark·2024년 9월 24일
0

해커랭크(sql)

목록 보기
20/20

해당 글 게시 목적은 업무에서 SQL 쿼리를 쓰면서 느낀점 및 피드백(앞으로 이렇게 발전된 쿼리를 쓰겠다)을 적는 용도

DISTINCT를 써서 중복값을 제거 했음에도 중복 데이터가 나오는 경우

as is
상황: 입고일자 컬럼을 제외한 다른 컬럼은 동일한 값이 중복되는 상황
사유: left 조인시 on절의 조건에 해당하는 입고일자가 여러개 등장하기 때문
(데이터 테이블에 대해서 어떤식으로 데이터가 쌓이는 지에 대한 무지)

to be
상황 파악: 입고일자를 포함하는 테이블은 inventory_transfer_order_id만 고유하면 입고일자 역시 고유할줄 알았는데, inventory_transfer_order_id에 해당하는 sku_id가 여러개 존재
전: 단일 on절
left join marketwms.integrated_history his on his.inventory_transfer_order_id = trans.inventory_transfer_order_id
후: 여러개 on절 (inventory_transfer_order_id와 sku_id에 맞는 각 데이터 연결)
left join marketwms.integrated_history his on his.inventory_transfer_order_id = trans.inventory_transfer_order_id and his.sku_id = trans.sku_id

쿼리가 길다고 멋있는(?) 것이 아니다

여러줄을 썼다고, 돌아가기만 한다고 좋은 쿼리는 아니다. 사실 아직 퀄리티를 따질 단계는 아니지만 방향은 잡고 가야 하므로 느낀점을 작성한다.
1) 효율적인 쿼리문을 작성해야 한다
: 쿼리문이 돌아는 가지만, 데이터 추출시 DB에서 조회하는 데이터의 양이 너무 많을 경우에는 필연적으로 시간이 많이 걸린다. 어떤 테이블을 가지고 어떤 로직으로 쿼리를 짜야 효율적인지 생각해보아야 한다.

다른 데이터 분석가가 기재한 쿼리를 분석해 보면서 내가 고쳐야 할 점이 있다면 적극적으로 바꿔야한다.

profile
야 너도 분석 할수 있어

0개의 댓글