프로그래머스에서 제공하는 SQL 고득점 Kit 문제 풀이 코드입니다. (정답 주의)
문제 링크
없어진 기록 찾기 (level 3)
JOIN을 사용할 때는 ON을 통해서 두 테이블이 조인될 기준 컬럼을 지정해줘야 함을 잊지말자.
또한 두 테이블의 컬럼을 구분하기 위해서 각 테이블을 AS를 통해 이름을 지정해줘야 한다.
SELECT OUTS.ANIMAL_ID, OUTS.NAME
FROM ANIMAL_OUTS AS OUTS
LEFT JOIN ANIMAL_INS AS INS
ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE INS.ANIMAL_ID IS NULL
ORDER BY OUTS.ANIMAL_ID
있었는데요 없었습니다 (level 3)
LEFT JOIN은 앞 테이블을 기준으로 한 JOIN.
RIGHT JOIN은 뒤 테이블을 기준으로 한 JOIN.
그냥 JOIN은 교집합 JOIN.
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS AS INS
JOIN ANIMAL_OUTS AS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.DATETIME > OUTS.DATETIME
ORDER BY INS.DATETIME
오랜 기간 보호한 동물(1) (level 3)
LEFT JOIN을 했기 때문에 레코드는 앞 테이블을 기준으로 JOIN하고, 뒷 테이블은 연결될 레코드가 없는 경우 null이 된다.
WHERE로 null을 거르는 조건을 추가하면 앞 테이블에는 있지만, 뒷 테이블에는 없는 레코드에 대한 조회가 가능하다.
SELECT INS.NAME, INS.DATETIME
FROM ANIMAL_INS AS INS
LEFT JOIN ANIMAL_OUTS AS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE OUTS.ANIMAL_ID IS NULL
ORDER BY INS.DATETIME
LIMIT 3;
보호소에서 중성화한 동물 (level 4)
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS AS INS
JOIN ANIMAL_OUTS AS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE LIKE '%Intact%' AND OUTS.SEX_UPON_OUTCOME NOT LIKE '%Intact%'
ORDER BY INS.ANIMAL_ID
반응형
'Tech > Problem Solving' 카테고리의 다른 글
[프로그래머스] Summer/Winter Coding(2019) - 우유와 요거트가 담긴 장바구니 (MySQL) (0) | 2022.03.01 |
---|---|
[프로그래머스] SQL 고득점 Kit - String, Date (0) | 2022.03.01 |
[프로그래머스] SQL 고득점 Kit - IS NULL (0) | 2022.03.01 |
[프로그래머스] SQL 고득점 Kit - GROUP BY (0) | 2022.03.01 |
[프로그래머스] SQL 고득점 Kit - SUM, MAX, MIN (0) | 2022.03.01 |