programming language/Algorithm

[SQL String, DATE] 프로그래머스 루시와 엘라 찾기, 이름에 el 있는 동물 찾기, 중성화 여부 파악하기, 오랜기간 보호한 동물, DATETIME 형 변환

jellylucy 2022. 3. 17. 22:21
 

코딩테스트 연습 - 루시와 엘라 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

나의 풀이

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE from ANIMAL_INS WHERE NAME = 'Lucy' or NAME = 'Ella' or NAME = 'Pickle' or NAME = 'Rogan' or NAME = 'Sabrina' or NAME = 'Mitty'  ORDER BY ANIMAL_ID

WHERE 절에 OR으로 이어 붙여서 출력했다.

 

다른 풀이

select animal_id, name, sex_upon_intake
from animal_ins
where name in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty');
  • WHERE NAME IN ()

새로운 쿼리문 구조 발견!


https://programmers.co.kr/learn/courses/30/lessons/59047

 

코딩테스트 연습 - 이름에 el이 들어가는 동물 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

SELECT ANIMAL_ID, NAME from ANIMAL_INS where NAME like '%el%' and ANIMAL_TYPE = 'Dog' order by NAME
  • where 컬럼명 like '%존재함% ' 

https://lcs1245.tistory.com/entry/SQL-LIKE-%EC%97%B0%EC%82%B0%EC%9E%90-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B6%80%EB%B6%84%EC%9D%BC%EC%B9%98-%EA%B2%80%EC%83%89 참조.


https://programmers.co.kr/learn/courses/30/lessons/59409

 

코딩테스트 연습 - 중성화 여부 파악하기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

SELECT ANIMAL_ID, NAME, 
case when (SEX_UPON_INTAKE like 'Neutered%' or SEX_UPON_INTAKE like 'Spayed%') then 'O' else 'X' end as 중성화
from ANIMAL_INS order by ANIMAL_ID
  • CASE WHEN (조건문) THEN 실행 ELSE 아니면이거실행 END

https://121202.tistory.com/46 참고


https://programmers.co.kr/learn/courses/30/lessons/59411

 

코딩테스트 연습 - 오랜 기간 보호한 동물(2)

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

SELECT OUTS.ANIMAL_ID, OUTS.NAME from ANIMAL_OUTS OUTS
LEFT JOIN ANIMAL_INS INS on INS.ANIMAL_ID = OUTS.ANIMAL_ID
where OUTS.DATETIME is not null
order by OUTS.DATETIME - INS.DATETIME desc limit 2
  • DATETIME 뺄셈 적용가능 ! 
  • DESC ASC 논리와 잘 파악할 것. 역순 정순!

https://programmers.co.kr/learn/courses/30/lessons/59414

 

코딩테스트 연습 - DATETIME에서 DATE로 형 변환

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME,'%Y-%m-%d') from ANIMAL_INS order by ANIMAL_ID
  • 형변환 DATE_FORMAT(컬럼명, '%Y-%m-%d')
  • 이 때 y는 대문자 사용한다.