1. 이름이 없는 동물의 아이디
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID
- ANIMAL_INS 테이블에서 NAME 컬럼 값이 없는 값을 조회한다
- AMIMAL_ID를 오름차순(ASC)으로 정렬한다
2. 이름이 있는 동물의 아이디
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID
- ANIMAL_INS 테이블에서 NAME 컬럼 값이 있는 값을 조회한다
- ANIMAL_ID를 오름차순(ASC)으로 정렬한다
3. NULL 처리하기
SELECT ANIMAL_TYPE, IFNULL(NAME, "No name") AS 'NAME', SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
- ANIMAL_INS 테이블에서 ANIMAL_TYPE, NAME, SEX_UPON_INTAKE 컬럼을 조회한다.
- ANIMAL_ID를 오름차순으로 정렬한다
- IFNULL 함수 : NAME 컬럼 값이 있으면 NAME 컬럼 값을 보여주고 없으면 No name 으로 조회한다
4. 없어진 기록 찾기
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS O LEFT JOIN ANIMAL_INS I ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE I.ANIMAL_ID IS NULL
ORDER BY O.ANIMAL_ID
- ANIMAL_OUTS 테이블에 값은 있는데, ANIMAL_INS 테이블에 없는 ANIMAL_ID와 NAME을 ANIMAL_ID 순으로 조회한다.
- TABLE_A LEFT JOIN TABLE_B ON TABLE_A.KEY = TABLE_B.KEY WHERE TABLE_B.KEY IS NULL
5. 있었는데요 없었습니다
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS O LEFT JOIN ANIMAL_INS I ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE I.DATETIME > O.DATETIME
ORDER BY I.DATETIME
- ANIMAL_OUTS 테이블의 DATETIME값과 ANIMAL_INS 테이블의 DATETIME 값을 비교해서 ANIMAL_OUTS의 테이블의 DATETIME 값이 더 빠른 경우의 값을 조회한다
- ANIMAL_INS 테이블의 DATETIME 컬럼의 오름차 순으로 정렬한다
- TABLE_A LEFT JOIN TABLE_B ON TABLE_A.KEY = TABLE_B.KEY
6. 오랜 기간 보호한 동물(1)
SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL
ORDER BY I.DATETIME ASC
LIMIT 3
- ANIMAL_INS 테이블에는 ANIMAL_ID 값이 있으나 ANIMAL_OUTS 테이블에는 ANIMAL_ID 값이 없는 동물을 조회한다
- ANIMAL_INS 테이블의 보호시작일(DATETIME) 순으로 조회한다
- 상위 3개 값을 추출한다 (LIMIT 3)
- TABLE_A LEFT JOINTABLE_B ON TABLE_A.KEY = TABLE_B.KEY WHERE TABLE_B.KEY IS NULL
7. 보호소에서 중성화한 동물 : 보호소에 들어올 당시에는 중성화되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.
SELECT O.ANIMAL_ID, O.ANIMAL_TYPE, O.NAME
FROM ANIMAL_OUTS O LEFT JOIN ANIMAL_INS I ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE O.SEX_UPON_OUTCOME IN ('Spayed Female', 'Neutered Male')
AND I.SEX_UPON_INTAKE IN ('Intact Male', 'Intact Female')
ORDER BY O.ANIMAL_ID
- 중성화 되지 않은 상태 : Intact Male, Intact Female
- 중성화된 상태 : Neutered Male, Spayed Female
- ANIMAL_INS 테이블의 SEX_UPON_INTAKE 값이 중성화 되지 않은 상태 값이고, ANIMAL_OUTS 테이블의 SEX_UPON_OUTCOME 값이 중성화된 값을 조회한다
- ANIMAL_OUT 테이블의 ANIMAL_ID 컬럼을 오름차 순으로 조회한다
- TABLE_A LEFT JOIN TABLE_B ON TABLE_A.KEY = TABLE_B.KEY
': IT > 프로그래머스' 카테고리의 다른 글
[코딩테스트] MySQL > SELECT 문 (6) (0) | 2021.06.06 |
---|---|
[코딩테스트] MySQL > SELECT 문 (5) (0) | 2021.05.23 |
[코딩테스트] MySQL > SELECT 문 (3) (0) | 2021.05.19 |
[코딩테스트] MySQL > SELECT 문 (2) (0) | 2021.05.16 |
[코딩테스트] MySQL > SELECT 문 (1) (0) | 2021.05.15 |