본문 바로가기
SQL/문제풀이

프로그래머스 있었는데요 없었습니다 풀이(MySQL)

by wakestand 2019. 9. 6.
반응형

사이트명 : 프로그래머스(Programmers)

문제명 : 있었는데요 없었습니다

SQL : MySQL

 

문제 거지같이 만들어 놨는데

아니 그냥 설명하는 표에 한칸 더 파서 이름 한글로 박아놓으면 될거를

그걸 텍스트로 나열을 해서 찾아보게 해??

아직도 보호 시작일하고 입양일이 헷갈린다

 

아 진짜 문제 답답하게 만드네

 

불평은 여기까지 하고

두 테이블의 DATETIME이 다른 만큼 

ANIMAL_INS 테이블의 DATETIME > ANIMAL_OUTS 테이블의 DATETIME

이렇게 조회를 하라는 얘기다

마지막으로 ANIMAL_INS 테이블의 DATETIME으로 정렬을 한 후 제출해야 한다

 

내 풀이방법은 아래와 같은데

 

보호 시작일하고 입양일이 헷갈리는데  

ANIMAL_INS 테이블의 DATETIME > ANIMAL_OUTS 테이블의 DATETIME

이거다 이거

 

어쨌든 서브쿼리를 사용해야 풀 수 있는 문제인데

서브쿼리란 쿼리 안에 쿼리를 또 넣은 것!! () 부분을 참고하자

 

먼저 두 테이블을 합쳐 ANIMAL_INS와 ANIMAL_OUTS 테이블의

DATETIME을 ATIME과 BTIME으로 가져와 조회한다

이후 서브쿼리의 이름을 SQ1로 조회하고 밖에서 다시 한번 조회하는데

 

여기서는 SQ1.ATIME > SQ1.BTIME으로 조회한 후 

ORDER BY를 걸어 보호 시작일 순으로 정렬해주면 끝이 난다

 

마지막으로 프로그래머스에 바로 적용 가능한 답안은 아래와 같다

 

-- 코드를 입력하세요
SELECT SQ1.ANIMAL_ID, SQ1.NAME
FROM
    (
    SELECT A.ANIMAL_ID, A.NAME, A.DATETIME AS ATIME, B.DATETIME AS BTIME
    FROM ANIMAL_INS A, ANIMAL_OUTS B
    WHERE A.ANIMAL_ID = B.ANIMAL_ID
    ) SQ1
WHERE SQ1.ATIME > SQ1.BTIME
ORDER BY SQ1.ATIME
반응형

댓글