PS 공부 기록

프로그래머스 SQL 고득점 Kit 5/6 : JOIN

정글러 2022. 3. 31. 15:57

 

from문 내 join on 구문으로 테이블간의 동기화한 테이블을 타겟팅

select OUTS.ANIMAL_ID, OUTS.NAME
from (
    ANIMAL_OUTS OUTS left join ANIMAL_INS INS
    on INS.ANIMAL_ID = OUTS.ANIMAL_ID
)
where INS.ANIMAL_ID is NULL
order by OUTS.ANIMAL_ID

on에는 join문 좌측과 우측 table간의 공통된 키값을 명시

join 시 각 row는 좌측과 우측 table의 모든 column을 갖는다. 해당하는 값이 없을 시엔 null

outer, left outer, right outer, inner join은 키값을 기준으로 합집합, 좌/우 부분집합, 교집합을 나타낸다

inner와 left, right의 outer는 생략 가능

 

 

공통 키로 명시되지 않은 column은 column명이 같더라도 다른 column으로 취급

select INS.ANIMAL_ID, INS.NAME
from (
    ANIMAL_INS INS join ANIMAL_OUTS OUTS
    on INS.ANIMAL_ID = OUTS.ANIMAL_ID
)
where INS.DATETIME > OUTS.DATETIME
order by INS.DATETIME

이를 이용하여 ins와 outs의 column을 비교하는 등의 필터링도 가능하다

 

 

이번 파트에서는 문법보다도 해결력이 중요한 듯

문법은 한번에 배워두고 문제의 컨디션에 따라 뭘 쓸지 결정하는 것이 문제해결의 요점이었다.

 

 

여기가 기출빈도가 높다는데

술술 풀리는걸 보니 이정도 난이도로만 나온다면 큰 걱정은 없을듯