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을 비교하는 등의 필터링도 가능하다
이번 파트에서는 문법보다도 해결력이 중요한 듯
문법은 한번에 배워두고 문제의 컨디션에 따라 뭘 쓸지 결정하는 것이 문제해결의 요점이었다.
여기가 기출빈도가 높다는데
술술 풀리는걸 보니 이정도 난이도로만 나온다면 큰 걱정은 없을듯
'PS 공부 기록' 카테고리의 다른 글
프로그래머스 SQL 고득점 Kit 6/6 : String, Date (0) | 2022.03.31 |
---|---|
프로그래머스 SQL 고득점 Kit 4/6 : IS NULL (0) | 2022.03.31 |
프로그래머스 SQL 고득점 Kit 3/6 : GROUP BY (0) | 2022.03.31 |
프로그래머스 SQL 고득점 Kit 2/6 : SUM, MAX, MIN (0) | 2022.03.31 |
프로그래머스 SQL 고득점 Kit 1/6 : SELECT (0) | 2022.03.31 |