■ IS NULL KIT
- level 1 이름 없는 동물의 아이디
- level 1 이름 있는 동물의 아이디
- level 2 NULL 처리
▷ level 1 이름 없는 동물의 아이디 [oracle]
programmers.co.kr/learn/courses/30/lessons/59039
코딩테스트 연습 - 이름이 없는 동물의 아이디
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID ASC
▷ level 1 이름 있는 동물의 아이디 [oracle]
programmers.co.kr/learn/courses/30/lessons/59407
코딩테스트 연습 - 이름이 있는 동물의 아이디
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID ASC
▷ level 2 NULL 처리 [oracle]
programmers.co.kr/learn/courses/30/lessons/59410
코딩테스트 연습 - NULL 처리하기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
SELECT ANIMAL_TYPE, CASE
WHEN NAME IS NULL THEN 'No name'
ELSE NAME END as NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC
-한줄 평 : 마지막 문제 빼고는 IS NULL, IS NOT NULL 문법만 알면 풀 수 있는 문제,,,, 역시 레벨 1이다. 딱히 할 말이 없다.
■ STRING, DATE KIT
- level 2 루시와 엘라 찾기
- level 2 중성화 여부 파악하기
- level 3 오랜 기간 보호한 동물(2)
- level 2 DATETIME에서 DATE로 형 변환
▷ level 2 루시와 엘라 찾기 [oracle]
programmers.co.kr/learn/courses/30/lessons/59046
코딩테스트 연습 - 루시와 엘라 찾기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Ella','Lucy','Pickle','Rogan','Sabrina','Mitty')
ORDER BY ANIMAL_ID ASC
▷ level 2 중성화 여부 파악하기 [oracle]
programmers.co.kr/learn/courses/30/lessons/59409
코딩테스트 연습 - 중성화 여부 파악하기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
SELECT ANIMAL_ID, NAME, CASE WHEN SEX_UPON_INTAKE LIKE '%Intact%' THEN 'X'
ELSE 'O' END as 중성화
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC
▷ level 3 오랜 기간 보호한 동물 (2) [oracle]
programmers.co.kr/learn/courses/30/lessons/59411
코딩테스트 연습 - 오랜 기간 보호한 동물(2)
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
SELECT ANIMAL_ID, NAME
FROM (
SELECT i.ANIMAL_ID, i.NAME
FROM ANIMAL_INS i, ANIMAL_OUTS o
WHERE i.ANIMAL_ID = o.ANIMAL_ID
ORDER BY o.DATETIME - i.DATETIME DESC
)
WHERE ROWNUM <= 2
이 문제에서 포인트 는 FROM절 서브쿼리에서 입양 일 - 보호소 들어온 날을 기준으로 정렬 시킨다.
참고로 만약에 ORDER BY를 서브쿼리가 아닌 메인 쿼리에서 쓴다면 WHERE절이 먼저 읽힘으로 정렬되지 않은 상태에서 위에서 2번째까지의 쿼리가 출력된다.
▷ level 2 DATETIME에서 DATE로 형 변환 [oracle]
programmers.co.kr/learn/courses/30/lessons/59414
코딩테스트 연습 - DATETIME에서 DATE로 형 변환
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
SELECT ANIMAL_ID, NAME, to_char(DATETIME, 'yyyy-mm-dd') as 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC
■ GROUP BY KIT
- level 4 입양 시각 구하기 (2)
▷ level 4 입양 시각 구하기 (2) [oracle]
programmers.co.kr/learn/courses/30/lessons/59413
코딩테스트 연습 - 입양 시각 구하기(2)
ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물
programmers.co.kr
SELECT L.hour as HOUR, nvl(count(time.hour), 0) as count
FROM (
select to_char(datetime, 'HH24') hour
from ANIMAL_OUTS
) time, (select LEVEL-1 as hour FROM dual CONNECT BY LEVEL<=24) L
WHERE L.hour = time.hour(+)
GROUP BY L.hour
order by L.hour asc
참고로 KIT 문제들 중 이 문제가 가장 어려웠다고 느꼈다. 왜냐면 없는 데이터를 어떻게 만들어서 응용할까 고민해야 했기 때문인데, 생각보다 답이 쉬워서 씁쓸했다.
더미 테이블 dual 을 활용하여 00 부터 23까지의 시간 테이블을 만든다. 만들어진 더미 테이블과 24시간으로 정렬된 time 테이블을 아우터 조인하여 시간은 00부터 23까지 표현하기 때문에 더미 테이블 L을 사용하고, 카운팅 할 때는 time테이블의 hour을 사용하여 Null값을 0으로 표현해준다. 이때 사용하는 함수는 nvl을 사용한다.
'today's alogrithm' 카테고리의 다른 글
[BOJ] 1254번 팰린드롬 만들기 - JAVA (0) | 2021.06.17 |
---|---|
[BOJ] 이분 탐색 단계 - JAVA (0) | 2021.02.06 |
[BOJ] 정렬 단계3 - JAVA (0) | 2021.02.03 |
[BOJ] 정렬 단계2 - JAVA (0) | 2021.02.02 |
[BOJ] 정렬 단계 - JAVA (0) | 2021.01.31 |