SQL 문제 풀이(JOIN)

1 minute read

JOIN

  • SQL 테이블 여러개를 합쳐 데이터를 조회할 때 필요한 join!

Programmers에서문제를 하나씩 풀이하며 기초를 다져보자!!

1. 없어진 기록 찾기

LINK

  • 기본적인 join 문제이다.
  • 외래키를 주고 join하여 데이터를 출력할 수 있는지에 대한 문제
  • join을 할때의 조건은 on으로 해준다.
  • INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN 등 공부하자!
  • 풀이
SELECT b.ANIMAL_ID, b.NAME
FROM ANIMAL_OUTS b
LEFT OUTER JOIN ANIMAL_INS a on b.ANIMAL_ID = a.ANIMAL_ID
WHERE a.ANIMAL_ID IS NULL
ORDER BY b.ANIMAL_ID

2. 있었는데요 없었습니다

LINK

  • 1번과 거의 비슷한 문제
  • 1번에서 DATETIME 끼리 비교를 할 수 있는지에 대해 알아보는 문제
  • 풀이
SELECT AI.ANIMAL_ID, AI.NAME
FROM ANIMAL_INS AI
LEFT OUTER JOIN ANIMAL_OUTS AO on AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AI.DATETIME > AO.DATETIME
ORDER BY AI.DATETIME

3. 오랜 기간 보호한 동물(1)

LINK

  • join에 limit을 활용한 문제
  • sub query를 사용한 풀이
SELECT NAME, DATETIME
FROM ANIMAL_INS
WHERE NOT ANIMAL_ID in (
    SELECT ANIMAL_ID
    FROM ANIMAL_OUTS
)
ORDER BY DATETIME
LIMIT 3
  • join을 사용한 풀이
SELECT AI.NAME, AI.DATETIME
FROM ANIMAL_INS AI 
LEFT JOIN ANIMAL_OUTS AO ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AO.DATETIME IS NULL
ORDER BY AI.DATETIME
LIMIT 3

4. 보호소에서 중성화한 동물

LINK

  • 더이상 설명이 필요 없는 문제이다!
  • 들어올때의 성과 나갈때의 성이 다른 동물을 출력하는 문제
  • 풀이
SELECT AO.ANIMAL_ID, AO.ANIMAL_TYPE, AO.NAME
FROM ANIMAL_OUTS AO
LEFT JOIN ANIMAL_INS AI on AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AO.SEX_UPON_OUTCOME != AI.SEX_UPON_INTAKE

Tags:

Categories:

Updated:

Leave a comment