본문 바로가기
알고리즘/SQL

SQL(MYSQL) / 프로그래머스 String, Date (루시와 엘라 찾기, 이름에 el이 들어가는 동물 찾기, 중성화 여부 파악하기, 오랜 기간 보호한 동물(2), DATETIME에서 DATE로 형 변환)

by clean_h 2022. 1. 28.
728x90

SQL(MYSQL) / 프로그래머스 String, Date (루시와 엘라 찾기, 이름에 el이 들어가는 동물 찾기, 중성화 여부 파악하기, 오랜 기간 보호한 동물(2), DATETIME에서 DATE로 형 변환)

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

 

프로그래머스

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

programmers.co.kr

 

 


 

 

 루시와 엘라 찾기

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

 

DB JOIN 정리(INNER/LEFT/RIGHT/OUTER)

join(조인) 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법 연결하려면 테이블들이 적어도 하나의 컬럼을 공유하고 있어야함 이 공유하고 있는 컬럼을 PK 또는 FK값으로 사용 ​ 종류 1. INNER

pearlluck.tistory.com

 

내부 조인의 두가지 방법이 있다.

  1. FROM/WHERE을 사용 : FROM ANIMAL_INS AS I, ANIMAL_OUTS AS O / WHERE I.ANIMAL_ID = O.ANIMAL_ID
  2. 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

댓글