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

Kim Yuhyeon·2022년 5월 7일
0

SQL 

목록 보기
6/21

문제


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

String


IN

WHERE 일치하길 원하는 컬럼명 IN (조건1, 조건2, 조건3 ...)

-- 동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 
-- 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요.
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS 
WHERE NAME IN ("Lucy", "Ella", "Pickle", "Rogan", "Sabrina", "Mitty")

LIKE

쿼리문 WHERE절에 주로 사용되며
부분적으로 일치하는 칼럼을 찾을때 사용됩니다.

SELECT * FROM [테이블명] WHERE LIKE [조건]

_ : 글자숫자를 정해줌(EX 컬럼명 LIKE '홍_동')
% : 글자숫자를 정해주지않음(EX 컬럼명 LIKE '홍%')

-- 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 
-- 이때 결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS 
WHERE NAME LIKE '%EL%' AND ANIMAL_TYPE = 'Dog'
ORDER BY NAME

조건문


CASE WHEN

가장 많이 쓰이는 조건문입니다.
조건에 따라 값을 지정해 주는 역할을 합니다.

--테이블(MY_TABLE)에서 성별(GENDER)이 001이면 여, 그게아니면 남자로 검색--
SELECT DISTINCT
GENDER,
CASE WHEN GENDER = '001' THEN '여' ELSE '남' END AS 성별
FROM MY_TABLE

다중 CASE WHEN

--테이블(MY_TABLE)에서 성적(SCORE)별 학점을 계산
SELECT *,
   (CASE WHEN SCORE>= '90' THEN 'A학점'
        WHEN (SCORE>= '80' AND SCORE < '90') THEN 'B학점'
        WHEN (SCORE>= '70' AND SCORE < '80') THEN 'C학점' 
        WHEN (SCORE>= '60' AND SCORE < '70') THEN 'D학점'
        ELSE 'F학점'
    END) AS '학점'
FROM MY_TABLE

Date


기본적인 연산

-- 입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 
-- 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.
SELECT B.ANIMAL_ID, B.NAME
FROM ANIMAL_INS AS A, ANIMAL_OUTS AS B 
WHERE  A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY (B.DATETIME - A.DATETIME) DESC
LIMIT 2

IF ELSE

CASE WHEN과 같은 조건문입니다.
마찬가지로 조건에 따라 원하는 작업을 수행할 수 있습니다.

IF 조건 참일때 값 ELSE 거짓일때 값 END 컬럼명

--  동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 중성화가 되어있다면 '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

DATE_FORMAT

DATE_FORMAT(DATE, 형식)을 통해
DATE의 형식을 바꿀 수 있습니다.

  • %Y (4자리 연도)
  • %y (2자리 연도)
  • %m (월)
  • %d(일)
  • %H (24시간)
  • %h (12시간)
  • %i
  • %s
-- 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜1를 조회하는 SQL문을 작성해주세요. 
-- 이때 결과는 아이디 순으로 조회해야 합니다.
SELECT ANIMAL_ID, NAME,DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜
FROM ANIMAL_INS 
ORDER BY ANIMAL_ID

💡 참고 포스팅


0개의 댓글