본문 바로가기

Tech/Problem Solving

[프로그래머스] SQL 고득점 Kit - String, Date

 

프로그래머스에서 제공하는 SQL 고득점 Kit 문제 풀이 코드입니다. (정답 주의)

 

문제 링크

https://programmers.co.kr/learn/courses/30/parts/17047

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

루시와 엘라 찾기 (level 2)

WHERE - IN을 이용하면 해당 데이터를 ()안에 있는 값들에 포함되어 있는지를 찾는다.

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ("Lucy", "Ella", "Pickle", "Rogan", "Sabrina", "Mitty")
ORDER BY ANIMAL_ID

 

이름에 el이 들어가는 동물 찾기 (level 2)

LIKE 키워드를 이용하면 와일드카드를 통한 문자열을 찾는 것이 가능하다.

'%'는 0개 이상의 어떤 문자가 들어가도 상관없는 경우를 나타내고,

'_'는 1개의 어떤 문자가 들어가도 상관없는 경우를 나타낸다.

'%el%'은 어떤 문자열이든 el만 포함되면 상관없음을 의미하고, 'el%'는 el로 시작하는 문자열, '%el'은 el로 끝나는 문자열을 나타낸다.

 

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE '%el%' AND ANIMAL_TYPE = 'Dog'
ORDER BY NAME

 

중성화 여부 파악하기 (level 2)

IF문과 LIKE 연산자의 와일드 카드를 통해 중성화가 되어있는 경우는 'O', 그렇지 않은 경우 'X'가 되도록 했다.

SELECT ANIMAL_ID, NAME, 
    IF(SEX_UPON_INTAKE LIKE '%Neutered%' 
        OR SEX_UPON_INTAKE LIKE '%Spayed%', 'O', 'X') AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

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

DATETIME의 차이를 통한 정렬을 이용하였다.

SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS AS INS
JOIN ANIMAL_OUTS AS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
ORDER BY OUTS.DATETIME - INS.DATETIME DESC
LIMIT 2

 

DATETIME에서 DATE로 형 변환 (level 2)

DATE_FORMAT()을 이용해서 DATETIME의 포맷을 수정할 수 있다.

%y -> 년도 뒤에서 두자리

%Y -> 년도 네자리 전부

%m -> 월 숫자

%M -> 월 영어로

%d -> 일 숫자

%D -> 일 th

%h -> 시

%m -> 분

%s -> 초

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

 

 

반응형