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

draidev·2022년 2월 24일

프로그래머스 String, Date


1. 루시와 엘라 찾기

코드

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 ASC;

처음에 위에 처럼 조건을 OR로 처리해줬는데 리스트로 묶어서 IN으로 처리해주는게 훨씬 깔끔했다.

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

2. 이름에 el이 들어가는 동물 찾기

LIKE특수 연산자를 사용하는 문제이다.
NAME LIKE 'D%'는 D로 시작하는 이름
NAME LIKE '%N'은 N으로 끝나는 이름
NAME LIKE '%EO%'는 EO를 포함하는 이름을 각각 의미한다.

코드에서는 NAME LIKE "%EL%"이므로 EL을 포함하는 이름을 조건으로 한다.
그리고 AND논리연산자로 동시에 종이 개인 동물을 검색한다.

코드

SELECT  ANIMAL_ID
        ,NAME
  FROM  ANIMAL_INS
 WHERE  NAME LIKE "%EL%"
        AND ANIMAL_TYPE = "Dog"
 ORDER
    BY  NAME ASC;

3. 중성화 여부 파악하기

CASE WHEN 조건문사용 코드

CASE 		
	WHEN 조건1 THEN '조건1 반환값'
	WHEN 조건2 THEN '조건2 반환값'
	ELSE '위의 조건들을 제외한 조건의 반환값'
 END
SELECT  ANIMAL_ID
        ,NAME
        ,CASE 
        WHEN SEX_UPON_INTAKE LIKE '%Intact%' 
        THEN 'X' 
        ELSE 'O' END
        AS '중성화'
  FROM  ANIMAL_INS
 ORDER
    BY  ANIMAL_ID;

IF 조건문 사용 코드

IF(조건문, 참일 때 반환값, 거짓일 때 반환값)
SELECT  ANIMAL_ID
        ,NAME
        ,IF(SEX_UPON_INTAKE LIKE '%Intact%','X','O') AS '중성화'
  FROM  ANIMAL_INS
 ORDER
    BY  ANIMAL_ID;

4. 오랜 기간 보호한 동물(2)

코드

DATEDIFF(날짜1, 날짜2) : 날짜1 - 날짜2 일수 반환

SELECT  A.ANIMAL_ID
        ,A.NAME
  FROM  ANIMAL_INS AS A
 INNER
  JOIN  ANIMAL_OUTS AS B
    ON  A.ANIMAL_ID = B.ANIMAL_ID
 ORDER
    BY  DATEDIFF(A.DATETIME,B.DATETIME) ASC
 LIMIT  2;

5. DATETIME에서 DATE로 형 변환

코드

DATE_FORMAT() 함수 사용

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

DATE_FORMAT 구분기호

구분기호역할구분기호역할
%Y4자리 년도%m숫자 월(두자리)
%y2자리 년도%c숫자 월(한자리는 한자리)
%M긴 월(영문)%d일자(두자리)
%b짧은 월(영문)%e일자(한자리는 한자리)
%W긴 요일 이름(영문)%I시간(12시간)
%a짧은 요일 이름(영문)%H시간(24시간)
%i%rhh:mm:ss AM,PM
%Thh:mm:ss%S

실행 결과


사용한 데이터베이스가 초단위는 설정이 따로 안되있는지 다 00으로 나왔다.

profile
I trust myself.

0개의 댓글