0. 공략법
- 💿 문제로 배우는 SQL - JOIN 글을 참고해주세요.
- 코딩테스트에 SQL이 나온다고 하면 JOIN이 나올 확률이 높습니다.
- 테이블 2개가 나왔다 싶으면 문제를 읽으면서 두 테이블 사이 공통된 column이 무엇인지 파악합니다.
- 부족한 데이터라는 키워드가 나오면 Left(Right) Join을 사용할 마음을 갖어야 합니다.
- SUM, COUNT 내장함수, DISTINCT, ORDER BY, HAVING과 같이 등장합니다.
- 프로그래머스 JOIN문제는 최근 나오는 SQL 최고 난이도를 커버하기에는 2% 부족합니단. 본 문제를 다 풀고 Hacker Rank문제를 추가적으로 풀기를 바랍니다.
1. 없어진 기록 찾기
- 문제 링크: 없어진 기록 찾기
SELECT
ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME
FROM
ANIMAL_OUTS LEFT JOIN ANIMAL_INS
ON
ANIMAL_OUTS.ANIMAL_ID = ANIMAL_INS.ANIMAL_ID
WHERE
ANIMAL_INS.ANIMAL_ID IS NULL
2. 있었는데요 없었습니다
- 문제 링크: 있었는데요 없었습니다
SELECT
ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME
FROM
ANIMAL_OUTS INNER JOIN ANIMAL_INS
ON
ANIMAL_OUTS.ANIMAL_ID = ANIMAL_INS.ANIMAL_ID
WHERE
ANIMAL_OUTS.DATETIME < ANIMAL_INS.DATETIME
ORDER BY
ANIMAL_INS.DATETIME ASC
3. 오랜 기간 보호한 동물(1)
- 문제 링크: 오랜 기간 보호한 동물(1)
SELECT
ANIMAL_INS.NAME, ANIMAL_INS.DATETIME
FROM
ANIMAL_INS LEFT JOIN ANIMAL_OUTS
ON
ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID
WHERE
ANIMAL_OUTS.ANIMAL_ID IS NULL
ORDER BY
ANIMAL_INS.DATETIME ASC LIMIT 3
4. 보호소에서 중성화한 동물
- 문제 링크: 보호소에서 중성화한 동물
SELECT ANIMAL_OUTS.ANIMAL_ID,
ANIMAL_OUTS.ANIMAL_TYPE,
ANIMAL_OUTS.NAME
FROM
ANIMAL_OUTS LEFT JOIN ANIMAL_INS
ON
ANIMAL_OUTS.ANIMAL_ID=ANIMAL_INS.ANIMAL_ID
WHERE ANIMAL_INS.SEX_UPON_INTAKE LIKE 'Intact%' AND
(ANIMAL_OUTS.SEX_UPON_OUTCOME LIKE 'Spayed%' OR
ANIMAL_OUTS.SEX_UPON_OUTCOME LIKE 'Neutered%')
'Computer Science > Problem Solving' 카테고리의 다른 글
[프로그래머스] 크레인 인형뽑기 게임 - 2019 카카오 겨울 인턴십 코딩테스트 / 파이썬 (0) | 2020.04.21 |
---|---|
프로그래머스 SQL고득점kit 💉 GROUP BY 해답 (0) | 2020.04.19 |
프로그래머스 SQL고득점kit 💉 IS NULL 해답 (0) | 2020.04.19 |
프로그래머스 SQL고득점kit 💉 SUM, MAX, MIN 해답 (0) | 2020.04.19 |
프로그래머스 SQL고득점kit 검색결과 💉 "SELECT" 해답 (0) | 2020.04.19 |