코딩테스트

프로그래머스 있었는데요 없었습니다

코드 죄수 2023. 9. 2. 00:14

문제에서 원하는 것은

1. 입양일이 보호 시작일 보다 빨라야 하며

2. 보호 시작일 순으로 조회되어야 한다.

 

 

이제 두 테이블을 보며 1번부터 차근차근 sql구문으로 바꾸도록 하겠다.

 

1. 입양일이 보호일 보다 빨라야 한다는 것은 일단 두 테이블을 JOIN 해야 하며 두 테이블의 데이터가 모두 존재해야 입양이 된 동물이기 때문에 JOIN 중에서 INNER JOIN을 사용하면 된다.

 

또한 WHERE절을 이용하여 입양일이 보호 시작일 보다 작으면  입양일이 더 오래된 것을 보여줄 것이다.

 

따라서 이를 sql로 바꾸면 

FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME > B.DATETIME

 이런 식의 sql 구문이 만들어질 것이다 ON 뒤에 는 두 테이블의 공통적인 ANIMAL_ID 속성을 이용하여 조인을 해준 것이다.

 

아까 말했듯이 이미 입양이 된 동물 중에서 조회를 해야 하기 때문에 INNER JOIN을 한 모습을 볼 수 있다. 

 

두 번째로 2. 보호 시작일이 빠른 순으로 조회가 되어야 하기 때문에  ORDER BY절을 이용하여 DATETIME이 빠른 순으로 정렬하면 된다, 이를 sql로 변경하면 

ORDER BY A.DATETIME ASC;

이런 식이 될 것이다.

 

그리고 아이디와 이름을 출력하라고 하였으므로 이것까지 모두 합친 sql은 

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME > B.DATETIME
ORDER BY A.DATETIME ASC;

 

이런 식으로 작성이 된다.