프로그래머스 SQL JOIN을 풀어봅니다.
4문제
를 한 포스팅에 담아봅니다.
없어진 기록 찾기
- 입양을 간 기록은 있는데, 보호소에 없는 동물의 기록을 찾습니다.
ID
와NAME
에 관심있으므로 SELECT 해줍니다- 입양을 간 기록중에서, 보호소 기록에는 없는 정보를 찾아야 합니다.
OUT
에는 있으나IN
에는 없는 정보를 조회 해야합니다.OUT
을 기준으로LEFT JOIN
시킵니다.
OUT
에는 있지만IN
에는 없다는 것은ID
부분이 NULL 이 될것입니다.ID
순으로 정렬시켜줍니다.
1 |
|
있었는 데요 없었습니다
- 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회합니다.
ID
와NAME
에 관심있으므로 SELECT 해줍니다.- 입양이 된 동물 기준입니다.
- 양쪽에 전부 존재해야 합니다.
IN
을 기준으로INNER JOIN
시킵니다.
- 보호일보다 입양일이 더 빠르다는것은, 입양일의
DATETIME
이 더 작다는 것입니다. 보호일
순으로 정렬 시켜 줍니다.
1 |
|
오랜 기간 보호한 동물(1)
- 입얍을 못간 동물중 가장 오래 있었던 동물 3마리의 이름과 보호 시작을 조회합니다.
NAME
과DATETIME
에 관심있으므로 SELECT 해줍니다.- 입얍을 못간 동물중 입니다.
IN
에는 있으나OUT
에는 없는 정보를 조회 해야합니다.IN
을 기준으로LEFT JOIN
시킵니다.
- 입양을 가지 못했다는것은
OUT
에서 NULL 입니다. DATETIME
기준으로 정렬합니다.- 3마리 까지만 조회하니
LIMIT
를 걸어줍니다.
1 |
|
보호소에서 중성화한 동물
- 보호소에서 나간 동물중, 보호소 내에서 중성화 수술을 거친 동물을 찾습니다.
- 나간 동물중 입니다.
- 양쪽에 전부 존재해야 합니다.
IN
을 기준으로INNER JOIN
시킵니다.
- 중성화를 했다는 이야기는, 들어올때의 성별과 나갈때의 성별이 다르다는 것입니다.
!=
연산으로 비교합니다.ID
순으로 정렬 시켜 줍니다.
- 나간 동물중 입니다.