-
[SQL] 프로그래머스 3단계 SQL문제 모음🧠𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺/💙프로그래머스 2021. 11. 5. 20:04
3단계
1. 없어진 기록 찾기
SELECT OUTS.ANIMAL_ID, OUTS.NAME FROM ANIMAL_OUTS AS OUTS LEFT OUTER JOIN ANIMAL_INS AS INS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID WHERE INS.ANIMAL_ID IS NULL ORDER BY OUTS.ANIMAL_ID
JOIN, LEFT OUTER JOIN을 활용한다.
JOIN은 두 테이블의 데이터를 일정한 조건에 의해 연결하여 마치 하나의 테이블처럼 만드는 것이다.
LEFT OUTER JOIN은 JOIN을 수행할 때, 왼쪽에 있는 데이터는 무조건 가져오고, 오른쪽에 오는 테이블과 JOIN을 수행하여
조건에 맞는 값이 없으면 null값을 표시한다.
ANIMAL_OUTS를 왼쪽 테이블로, ANIMAL_INS를 오른쪽 테이블로 하여, ANIMAL_ID를 기준으로 LEFT OUTER JOIN하면 된다.
2. 있었는데요 없었습니다
SELECT INS.ANIMAL_ID, INS.NAME FROM ANIMAL_INS AS INS LEFT OUTER JOIN ANIMAL_OUTS AS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE OUTS.DATETIME < INS.DATETIME ORDER BY INS.DATETIME ASC
JOIN, LEFT OUTER JOIN을 활용한다.
이번에는 보호일을 기준으로 입양일이 이상한 것을 보기 때문에,
보호일을 가지는 ANIMAL_INS를 왼쪽에 두고, ANIMAL_OUTS를 오른쪽에 두었다.
3. 오랜 기간 보호한 동물 1
SELECT INS.NAME, INS.DATETIME FROM ANIMAL_INS AS INS LEFT OUTER JOIN ANIMAL_OUTS AS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE OUTS.DATETIME IS NULL ORDER BY INS.DATETIME ASC LIMIT 3
보호 테이블을 왼쪽으로, 입양 테이블을 오른쪽으로 조인했을 때, 입양 테이블의 Datetime이 NULL인 것은 입양을 아직 안 간 것이다.
LIMIT 3개를 두어, 가장 보호소에 오래 있는 동물 3마리를 출력한다.
4. 헤비유저가 소유한 장소
SELECT ID, NAME, HOST_ID FROM PLACES WHERE HOST_ID IN ( SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(HOST_ID) >= 2 ) ORDER BY ID ASC
5. 오랜 기간 보호한 동물 2
SELECT OUTS.ANIMAL_ID, OUTS.NAME FROM ANIMAL_OUTS AS OUTS LEFT OUTER JOIN ANIMAL_INS AS INS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID ORDER BY (OUTS.DATETIME - INS.DATETIME) DESC LIMIT 2
입양을 간! 동물중에 보호기간이 길었던 동물
'🧠𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > 💙프로그래머스' 카테고리의 다른 글
[SQL] 프로그래머스 4단계 SQL문제 모음 (0) 2021.11.05 [SQL] 프로그래머스 2단계 SQL문제 모음 (0) 2021.11.05 [SQL] 프로그래머스 1단계 SQL문제 모음 (0) 2021.11.05 [위클리챌린지] 8주차 최소직사각형(JavaScript) (0) 2021.09.29 [코딩테스트 고득점 Kit / Level2 🧒🏻 / 스택/큐] 프린터(python) (0) 2021.07.08