문제:

풀이방법:

NULL이 필요한 문제가 아니므로 기본 조인인 INNER JOIN을 사용해도 상관이 없다. 따라서 두 테이블을 INNER JOIN 했다. 그 다음에 보호 기간이 가장 길었다는 것은 O.DATETIME과 I.DATETIME의 차이가 크다는 것이다. 따라서 이 연산을 ORDER BY에다가 DESC 조건을 넣어서 찾도록 한다.

1
2
SELECT I.ANIMAL_ID, I.NAME FROM ANIMAL_INS I, ANIMAL_OUTS O WHERE I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY (O.DATETIME -I.DATETIME) DESC LIMIT 2;
cs

문제링크:

https://programmers.co.kr/learn/courses/30/lessons/59411

문제:

풀이방법:

조인을 통해서 NULL 값을 만들어야 한다면 LEFT JOIN이나 RIGHT JOIN을 써야 하는 것 같다. 따라서 '입양을 못 갔다' 라는 것은 INS에는 있지만 OUTS에는 없어야 하는 값들이다. 따라서 INS에 OUTS에 붙임으로써 입양을 못 간 동물들을 만들어 낸다. 이는 WHERE절로 O.ANIMAL_ID가 NULL인 값으로 찾을 수 있다. 그리고 3마리만 출력을 해야 하므로 LIMIT 3을 사용한다.

1
2
3
SELECT I.NAME,I.DATETIME FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID
WHERE O.ANIMAL_ID is NULL
ORDER BY I.DATETIME LIMIT 3;
cs

문제링크:

https://programmers.co.kr/learn/courses/30/lessons/59044

+ Recent posts