프로그래머스에서 제공하는 SQL 고득점 Kit 문제 풀이 코드입니다. (정답 주의)
문제 링크
https://programmers.co.kr/learn/courses/30/parts/17047
루시와 엘라 찾기 (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
반응형
'Tech > Problem Solving' 카테고리의 다른 글
[프로그래머스] 2021 Dev-Matching: 웹 백엔드 개발자(상반기) - 헤비 유저가 소유한 장소 (MySQL) (0) | 2022.03.01 |
---|---|
[프로그래머스] Summer/Winter Coding(2019) - 우유와 요거트가 담긴 장바구니 (MySQL) (0) | 2022.03.01 |
[프로그래머스] SQL 고득점 Kit - JOIN (0) | 2022.03.01 |
[프로그래머스] SQL 고득점 Kit - IS NULL (0) | 2022.03.01 |
[프로그래머스] SQL 고득점 Kit - GROUP BY (0) | 2022.03.01 |