핵심
JOIN
각 동물에 대해 보호 시작일과 입양일을 포함한 테이블을 만든다.
SELECT ANIMAL_ID, O.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
USING (ANIMAL_ID)
참고 입양이 되지 않은 경우에는 입양일이 NULL이고 이 경우 비교 연산은 NULL을 반환한다. WHERE 절에서 조건을 평가할 때 연산 결과가 NULL이면, 해당 조건은 false로 간주되어 결과 집합에서 해당 행이 제외된다. 입양 기록만있고 보호 시작일이 없는 상황은 비정상이기 때문에 포함되어야 하지만 이 문제에서는 이런 상황을 다루지 않기 때문에 어떤 JOIN을 사용할지 고려할 필요가 없다. 하지만 문제의 조건에 따라 고려해야할 수 있다.
WHERE
보호 시작일이 더 빠른지 확인한다. (두 날짜를 비교한다)
WHERE I.DATETIME > O.DATETIME
Code
SELECT ANIMAL_ID, O.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
USING (ANIMAL_ID)
WHERE I.DATETIME > O.DATETIME
ORDER BY I.DATETIME728x90
반응형
'CS > SQL Problem' 카테고리의 다른 글
| [Programmers] GROUP BY > 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2024.08.05 |
|---|---|
| [Programmers] JOIN > 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2024.07.11 |
| [Programmers] 서울에 위치한 식당 목록 출력하기 (0) | 2024.07.10 |
| [Programmers] 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2024.07.08 |
| [Programmers] JOIN > 조건에 맞는 도서와 저자 리스트 출력하기 (0) | 2024.07.04 |