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

 

SQL문

 

결과

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기