Data Scientist 옌

매일 발전하는 IT문제해결사

Programing 프로그래밍/코딩테스트 문제풀이

SQL 고득점 Kit - JOIN (5)

옌炎 2022. 1. 7. 09:23
728x90

JOIN

출제 빈도 높음, 평균 점수 낮음, 문제 세트 4개

MySQL 기준으로 풀이하였습니다.

(1) 없어진 기록 찾기 (Level 3)

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

(2) 있었는데요 없었습니다 (Level 3)

SELECT OUTS.ANIMAL_ID, OUTS.NAME
FROM ANIMAL_INS INS
LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE OUTS.DATETIME < INS.DATETIME
ORDER BY INS.DATETIME

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

SELECT INS.NAME, INS.DATETIME
FROM ANIMAL_INS INS
LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE OUTS.ANIMAL_ID IS NULL
ORDER BY INS.DATETIME
LIMIT 3

(4) 보호소에서 중성화한 동물 (Level 4)

SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM (
    SELECT ANIMAL_ID, ANIMAL_TYPE, NAME, SEX_UPON_INTAKE
    FROM ANIMAL_INS
    WHERE SEX_UPON_INTAKE IN ('Intact Male', 'Intact Female')
) INS
JOIN (
    SELECT ANIMAL_ID, ANIMAL_TYPE, NAME, SEX_UPON_OUTCOME
    FROM ANIMAL_OUTS
    WHERE SEX_UPON_OUTCOME IN ('Spayed Female', 'Spayed Male', 'Neutered Female', 'Neutered Male')
) OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
ORDER BY INS.ANIMAL_ID

 

4번에서 시간이 조금 걸리긴 했습니다만, 여기까지 문제없이 풀이하였습니다.

728x90