https://programmers.co.kr/learn/courses/30/parts/17046
# 없어진 기록 찾기
- 천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.
SELECT A.ANIMAL_ID, A.NAME
from ANIMAL_OUTS A left join ANIMAL_INS B
on A.ANIMAL_ID = B.ANIMAL_ID
where B.ANIMAL_ID is null
order by B.ANIMAL_ID;
# 있었는데요 없었습니다.
- 관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 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;
# 오랜 기간 보호한 동물(1)
- 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다.
SELECT A.NAME, A.DATETIME
from ANIMAL_INS A left join ANIMAL_OUTS B
on A.ANIMAL_ID = B.ANIMAL_ID
where B.ANIMAL_ID is null
order by A.DATETIME
limit 3;
# 보호소에서 중성화한 동물
- 보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.
- 중성화를 거치지 않은 동물은 성별 및 중성화 여부에 Intact, 중성화를 거친 동물은 Spayed 또는 Neutered라고 표시되어있습니다.
SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
from ANIMAL_INS A inner join ANIMAL_OUTS B
on A.ANIMAL_ID = B.ANIMAL_ID
where A.SEX_UPON_INTAKE != B.SEX_UPON_OUTCOME
order by A.ANIMAL_ID;
+ 다른 사람 풀이
SELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAME FROM
(SELECT * FROM ANIMAL_INS WHERE SEX_UPON_INTAKE LIKE 'Intact%') AS I
INNER JOIN
(SELECT ANIMAL_ID , ANIMAL_TYPE
FROM ANIMAL_OUTS
WHERE SEX_UPON_OUTCOME LIKE 'Spayed%' OR SEX_UPON_OUTCOME LIKE 'Neutered%') AS O
ON I.ANIMAL_ID = O.ANIMAL_ID
JOIN 개념
2021.04.15 - [cs지식/Database] - [ Database ] 조인(JOIN)의 종류 - INNER, OUTER, SELF
참고자료
'알고리즘 > SQL' 카테고리의 다른 글
프로그래머스 SQL 고득점 Kit 풀이 - String, Date (0) | 2021.03.11 |
---|---|
프로그래머스 SQL 고득점 Kit 풀이 - IS NULL (0) | 2021.03.11 |
프로그래머스 SQL 고득점 Kit 풀이 - GROUP BY (0) | 2021.03.10 |
프로그래머스 SQL 고득점 Kit 풀이 - SUM,MAX,MIN (0) | 2021.03.10 |
프로그래머스 SQL 고득점 Kit 풀이 - SELECT (0) | 2021.03.10 |