https://programmers.co.kr/learn/courses/30/lessons/59042?language=oracle
코딩테스트 연습 - 없어진 기록 찾기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
입양테이블은 왼쪽에 두고 입소 테이블과 LEFT JOIN을 한 후, 입소 테이블의 ID가 비어있는 컬럼을 조회
-- 코드를 입력하세요
SELECT OUTS.ANIMAL_ID AS ANIMAL_ID, OUTS.NAME AS NAME
FROM ANIMAL_OUTS OUTS LEFT JOIN ANIMAL_INS INS
ON OUTS.ANIMAL_ID=INS.ANIMAL_ID
WHERE INS.ANIMAL_ID IS NULL
ORDER BY OUTS.ANIMAL_ID, OUTS.NAME;
https://programmers.co.kr/learn/courses/30/lessons/59043?language=oracle
코딩테스트 연습 - 있었는데요 없었습니다
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
DATE 컬럼도 비교가 가능하므로 JOIN 후 입양날짜 보다 입소날짜가 빠른 컬럼을 조회한다.
-- 코드를 입력하세요
SELECT INS.ANIMAL_ID AS ANIMAL_ID, INS.NAME AS NAME
FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.DATETIME > OUTS.DATETIME
ORDER BY INS.DATETIME;
https://programmers.co.kr/learn/courses/30/lessons/59044?language=oracle
코딩테스트 연습 - 오랜 기간 보호한 동물(1)
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
인라인 뷰와 ROWNUM 을 이용해 3개의 컬럼만 조회
-- 코드를 입력하세요
SELECT *
FROM
(
SELECT INS.NAME AS NAME, INS.DATETIME AS DATETIME
FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE OUTS.ANIMAL_ID IS NULL
ORDER BY INS.DATETIME
)
WHERE ROWNUM <=3;
https://programmers.co.kr/learn/courses/30/lessons/59045?language=oracle
코딩테스트 연습 - 보호소에서 중성화한 동물
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
중성화 수술을 했다면 SEX_UPON_INTAKE컬럼과 SEX_UPON_OUTCOME컬럼의 값이 달라지는 것을 이용해 풀었다.
(중성화 했는데 다시 성을 달거나 남성에서 여성으로 바꼈을리는 없을테니...?)
-- 성이 바뀐 컬럼 조회
SELECT OUTS.ANIMAL_ID, OUTS.ANIMAL_TYPE, OUTS.NAME
FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE != OUTS.SEX_UPON_OUTCOME
ORDER BY OUTS.ANIMAL_ID;
-- 중성화 전 성별(Intact%)에서 중성화(Spayed% 또는 Neutered%) 후 성별로 바뀐 컬럼 조회
SELECT OUTS.ANIMAL_ID, OUTS.ANIMAL_TYPE, OUTS.NAME
FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE SEX_UPON_INTAKE LIKE 'Intact%' AND
(SEX_UPON_OUTCOME LIKE 'Spayed%' OR SEX_UPON_OUTCOME LIKE 'Neutered%')
ORDER BY OUTS.ANIMAL_ID;
'CodingTest Practice > Programmers' 카테고리의 다른 글
프로그래머스 : IS NULL (SQL, ORACLE) (0) | 2022.06.06 |
---|---|
프로그래머스 : GROUP BY (SQL, ORACLE) (0) | 2022.06.06 |
프로그래머스 : SUM,MAX,MIN (SQL, ORACLE) (0) | 2022.06.06 |
프로그래머스 : SELECT (SQL , ORACLE) (0) | 2022.06.06 |
프로그래머스 : 가장 먼 노드 (C++, Lv.3, 그래프) (0) | 2022.06.03 |