Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Cluster
- 미세먼지
- 스파르타
- 내일배움캠프
- 파이썬 머신러닝 완벽가이드
- 파이썬 머신러닝 완벽 가이드
- 회귀분석
- 프로젝트
- 어쩌다 마케팅
- MySQL
- TiL
- harkerrank
- 웹 스크랩핑
- 실전 데이터 분석 프로젝트
- 티스토리챌린지
- R
- SQL
- 스파르타코딩
- 중회귀모형
- 텍스트 분석
- wil
- hackerrank
- 오블완
- 파이썬
- 프로그래머스
- 파이썬 철저입문
- 내일배움
- 파이썬 철저 입문
- 스파르타 코딩
- 내일배움카드
Archives
- Today
- Total
OkBublewrap
없어진 기록 찾기 본문
<문제 설명>
천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.
<예시>예를 들어, ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블이 다음과 같다면
ANIMAL_INS
| ANIMAL_ID | ANIMAL_TYPE | DATETIME | INTAKE_CONDITION | NAME | SEX_UPON_INTAKE |
| A352713 | Cat | 2017-04-13 16:29:00 | Normal | Gia | Spayed Female |
| A350375 | Cat | 2017-03-06 15:01:00 | Normal | Meo | Neutered Male |
ANIMAL_OUTS
| ANIMAL_ID | ANIMAL_TYPE | DATETIME | NAME | SEX_UPON_OUTCOME |
| A349733 | Dog | 2017-09-27 19:09:00 | Allie | Spayed Female |
| A352713 | Cat | 2017-04-25 12:25:00 | Gia | Spayed Female |
| A349990 | Cat | 2018-02-02 14:18:00 | Spice | Spayed Female |
ANIMAL_OUTS 테이블에서
- Allie의 ID는 ANIMAL_INS에 없으므로, Allie의 데이터는 유실되었습니다.
- Gia의 ID는 ANIMAL_INS에 있으므로, Gia의 데이터는 유실되지 않았습니다.
- Spice의 ID는 ANIMAL_INS에 없으므로, Spice의 데이터는 유실되었습니다.
따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
| ANIMAL_ID | NAME |
| A349733 | Allie |
| A349990 | Spice |
<풀이>
처음에는 FULL OUTER JOIN을 사용해서 전체적으로 볼려고 했으나 MYSQL에서는 구문이 통하지 않았다.
MYSQL에서는 LEFT JOIN, RIGHT JOIN을 결합한 UNION으로 사용을 해야한다.
select *
from ANIMAL_INS A
left join ANIMAL_OUTS B on A.ANIMAL_ID = B.ANIMAL_ID
union
select *
from ANIMAL_INS A
right join ANIMAL_OUTS B on A.ANIMAL_ID = B.ANIMAL_ID

왼쪽이 ANIMAL_INS의 데이터, 오른쪽이 ANIMAL_OUTS의 데이터 이다. 손실된 데이터는 밑에서 4번째인 데이터가 된다.
select B.ANIMAL_ID, B.NAME
from ANIMAL_INS A
RIGHT JOIN ANIMAL_OUTS B on A.ANIMAL_ID = B.ANIMAL_ID
where A.ANIMAL_ID IS NULL

1)
위에 있는 UNION으로 묶은 것을 WITH로 테이블로 만들어서 조건을 줄려고 했는데 구문오류가 떴다.
2)
RIGHT JOIN으로 WHERE절에 ANIMAL_INS의 ANIMAL_ID가 NULL 값을 뽑는 조건을 썼다.
'개발 > SQL' 카테고리의 다른 글
| 오랜 기간 보호한 동물(2) (0) | 2023.03.09 |
|---|---|
| 있었는데요 없었습니다 (0) | 2023.03.08 |
| 오랜 기간 보호한 동물(1) (0) | 2023.03.08 |
| 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2023.02.27 |
| 가격대 별 상품 개수 구하기 (0) | 2023.02.27 |