호기심 많은 분석가

[MySQL] 프로그래머스 Coding_Test / String, Date (2) 본문

Coding/Coding Test & Algorithm

[MySQL] 프로그래머스 Coding_Test / String, Date (2)

DA Hun 2021. 5. 10. 19:44

포스팅 개요

 SQL 문법과 익숙해지고자 프로그래머스의 SQL Coding Test 문제들을 풀어봄. 그중 String, Date 파트의 문제들을 기록해두었습니다. 그 전 문제들은 2021.05.07 - [Coding Test & Algorithm] - [MySQL] 프로그래머스 Coding_Test / String, Date (1) 포스팅에서 확인할 수 있습니다.


포스팅 본문

 아래의 문제들은 모두 동일한 TABLE을 기준으로 문제가 주어졌습니다.

TABLE 설명

INS TABLE
OUTS TABLE


4. 오랜 기간 보호한 동물(2)

 입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.

오랜 기간 보호한 동물(2)

SELECT AI.ANIMAL_ID, AI.NAME
FROM ANIMAL_INS AS AI
JOIN 
ANIMAL_OUTS AS AO
USING (ANIMAL_ID)
ORDER BY (AO.DATETIME - AI.DATETIME) DESC
LIMIT 2

 동일한 ANIMAL_ID를 기준으로 두 테이블을 합쳤고, 보호 기간 순으로 정렬하기 위해 각 테이블의 DATETIME의 차를 구해 큰 순서대로 2개를 출력하였다.


5. DATETIME에서 DATE로 형 변환

ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회하는 SQL문을 작성해주세요. 이때 결과는 아이디 순으로 조회해야 합니다.

DATETIME에서 DATE로 형 변환

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

 이번 문제에서는 DATETIME을 우리가 원하는 형태로 바꾸어주는 DATE_FORMAT 함수를 아는 것이 키포인트였다. 

DATE_FORMAT(COLUMN, 형태)의 꼴을 가진 함수였고, 쉽게 날짜까지만 남길 수 있었다.


 이렇게 프로그래머스의 SQL 코딩 테스트 예제들을 모두 풀어보았습니다. 덕분에 SQL의 여러 문법들을 다시 익힐 수 있었고, 덕분에 얼마 전 프로그래머스의 Summer Intern 코딩 테스트에서 SQL 문제를 해결할 수 있었습니다.

 

 긴 글이었는데 다들 도움이 되셨길 바랍니다. 감사합니다. :)