관리 메뉴

오늘도 배운다

있었는데요 없었습니다 / 프로그래머스, SQL 코딩테스트 연습JOIN 본문

코딩테스트연습(SQL)

있었는데요 없었습니다 / 프로그래머스, SQL 코딩테스트 연습JOIN

LearnerToRunner 2022. 11. 21. 09:41

문제

관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.

 

제출답안

SELECT ao.animal_id, ao.name
FROM animal_ins AS ai JOIN animal_outs AS ao ON ai.animal_id = ao.animal_id
-- Oracle의 경우 AS를 삭제
WHERE ao.datetime < ai.datetime
ORDER BY ai.datetime

 

 

 

풀이

더보기

각 테이블을 animal_id 기준으로 JOIN

FROM animal_ins AS ai JOIN animal_outs AS ao ON ai.animal_id = ao.animal_id
-- Oracle의 경우 AS를 삭제

 >> animal_ins 테이블의 이름을 ai로, animal_outs의 테이블 이름을 ao로 

>> 오라클에서는 AS를 입력할 경우 ORA-00933: SQL command not properly ended  에러 발생

 

내보낸 날짜가 들어온 날짜보다 작은 데이터만 불러오기

WHERE ao.datetime < ai.datetime

>> 최근일수록 날짜의 값이 큼. 따라서 일반적인 경우에는 ao의 datetime 값이 ai의 datetime값보다 커야함

>> 따라서, 입력에러가 발생한 것은 ao의 datetime이 더 작은 경우임

 

 

 

 

문제 바로가기

 

728x90
Comments