프로그래머스 오랜 기간 보호한 동물(2) mysql
https://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
입양을 간 동물 중 보호기간이 가장 길었던 동물 '두 마리'의 아이디와 이름을 보호 기간이 긴 순으로 조회하는 SQL문을 작성하는 문제다.
따라서 where 절을 통해 두개의 테이블을 조인하고 보호기간이 긴 순으로 정렬해야 하기 때문에
보호소에서 나간 날짜에서 보호소로 들어온 날짜를 뺀 다음 그것을 DESC를 통해 내림차순 했다.
또한 LIMIT 2 명령어를 사용해 2개만 출력하게 했다.
코드는 다음과 같다.
SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A, ANIMAL_OUTS B
WHERE A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY B.DATETIME-A.DATETIME DESC
LIMIT 2
0826 TIL
ifnull( 칼럼, "바꿀텍스트") : ORACLE에서으 NVL() 과 같다.
WHERE NAME IN ("~~~","~~~") IN 안에 있는 있는 것들을 OR처럼 생각한다.
SQL에서 LIKE절 사용법
'_' : 글자 숫자를 정해줌 (컬럼명 LIKE '루_시')
'%' : 글자 숫자를 정해주지 않고 해당 문자를 포함한 결과를 모두 출력한다 ( 컬럼명 LIKE '루%')
DATE_FORMAT( date컬럼, "%Y-%m-%d") 을 통해 날짜를 지정한 형식으로 출력할 수 있다.
NOW() 는 현재시간을 불러온다. 대신에 FROM DUAL을 사용해야함
대소문자 연산자(upper / lower)
CASE WHEN문
CASE
WHEN 조건
THEN '반환 값'
WHEN 조건
THEN '반환 값'
ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END