728x90
SQL(MYSQL) / 프로그래머스 String, Date (루시와 엘라 찾기, 이름에 el이 들어가는 동물 찾기, 중성화 여부 파악하기, 오랜 기간 보호한 동물(2), DATETIME에서 DATE로 형 변환)
https://programmers.co.kr/learn/courses/30/parts/17047
String, Date
문제를 클릭하면 풀이로 이동합니다.
루시와 엘라 찾기
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
ORDER BY ANIMAL_ID
IN
IN은 OR 관계를 묶어 나열하는 조건을 WHERE 절에 사용할 때 쓸 수 있다.
', '로 이름을 구분하여 괄호 내에 있는 이름과 일치하는지를 판단한다.
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME = 'Ella' || NAME = 'Lucy' || NAME = 'Pickle' || NAME = 'Rogan' || NAME = 'Sabrina' || NAME = 'Mitty'
ORDER BY ANIMAL_ID
IN을 사용하지 않을 때는 다음과 같이 구현도 가능하다. 하지만 이보다는 IN을 사용하여 구현하는 것이 훨씬 간편하다.
이름에 el이 들어가는 동물 찾기
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE ANIMAL_TYPE = 'Dog' && NAME LIKE '%el%'
ORDER BY NAME
LIKE
LIKE는 특정 문자가 포함되어 있는 데이터를 검색할 때 사용된다.
또한 %기호를 어디 붙이느냐에 따라 문자의 위치 조건을 찾을 수 있다.
- '%el' - 앞에만 존재할 때는 뒤가 el로 끝나는 이름만 검색할 수 있다.
- 'el%' - 뒤에만 존재할 때는 앞에가 el로 시작하는 이름만 검색할 수 있다.
- '% el%' - 양 옆에 모두 존재할 때는 el이 어느 위치에 있든 검색할 수 있다.
비슷한 기호 중 '_'가 존재한다. '_'는 한글 자라는 의미로 사용되고 _에는 한 글자만 올 수 있다.
_el로 사용된다면 el 앞에 한글자만 존재하는 이름을 검색할 수 있다.
중성화 여부 파악하기
SELECT ANIMAL_ID, NAME, IF(SEX_UPON_INTAKE LIKE '%Neutered%' || SEX_UPON_INTAKE LIKE 'Spayed%', 'O', 'X') AS 중성화
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
IF
IF(조건문, 참일때 값, 거짓일 때 값)이다.
따라서 Neutered과 Spayed 단어가 들어가 있으면 O를 들어가 있지 않다면 X를 출력한다.
오랜 기간 보호한 동물(2)
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS AS I, ANIMAL_OUTS AS O
WHERE I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY O.DATETIME-I.DATETIME DESC
LIMIT 2
테이블 두 개 이상일 때 (JOIN)
두 개 이상의 테이블을 연결하여 데이터를 검색하는 방법이다.
JOIN을 이용하여 두 개 이상의 테이블을 연결하여 사용할 수 있다.
참고
https://pearlluck.tistory.com/46
내부 조인의 두가지 방법이 있다.
- FROM/WHERE을 사용 : FROM ANIMAL_INS AS I, ANIMAL_OUTS AS O / WHERE I.ANIMAL_ID = O.ANIMAL_ID
- INNER JOIN / ON을 사용 : FROM ANIMAL_INS AS I INNER JOIN ANIMAL_OUTS AS O / ON I.ANIMAL_ID = O.ANIMAL_ID
두 가지 모두 사용하여 테이블 두 개를 조인할 수 있다.
DATETIME에서 DATE로 형 변환
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
DATE 형변환(DATE_FORMAT)
기호 | 의미 | 기호 | 의미 |
%Y | 4자리 년도 | %y | 2자리 년도 |
%M | 월(영문) | %m | 숫자 월 (2자리) |
%D | 일자(2자리) +th | %d | 일자(2자리) |
%W | 긴 요일 이름(영문) | %a | 짧은 요일 이름(영문) |
%H | 시간(24시간) | %I | 시간 (12시간) |
%i | 분 | %S | 초 |
%r | hh:mm:ss AM,PM | %T | hh:mm:SS |
날짜를 지정한 형식으로 바꿔서 출력할 수 있다.
728x90
'알고리즘 > SQL' 카테고리의 다른 글
SQL(MYSQL) / 프로그래머스 : 우유와 요거트가 담긴 장바구니 (0) | 2022.02.04 |
---|---|
SQL(MYSQL) / 프로그래머스 JOIN (없어진 기록 찾기, 있었는데요 없었습니다, 오랜 기간 보호한 동물(1), 보호소에서 중성화한 동물) (0) | 2022.02.03 |
SQL / SQL 문법 순서 및 실행 순서 (0) | 2022.01.09 |
SQL(프로그래머스) / GROUP BY(고양이와 개는 몇 마리 있을까, 동명 동물 수 찾기, 입양 시각 구하기(1), 입양 시각 구하기(2)) (0) | 2022.01.09 |
프로그래머스(MySQL) / SUM, MAX, MIN (최댓값 구하기, 최솟값 구하기, 동물 수 구하기, 중복 제거하기) (0) | 2022.01.07 |
댓글