[SQL] String, Date

Jeanine·2022년 4월 27일
0

sql

목록 보기
5/6
post-thumbnail
  • 동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디이름, 성별 및 중성화 여부를 조회하는 SQL문
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS I
WHERE I.NAME IN ('Lucy', 'Ella', 'Pickle', 'Sabrina', 'Mitty')
ORDER BY I.ANIMAL_ID;

📍 AS 대신, 띄어쓰기만으로도 별칭을 지정 가능

IN 연산자
: WHERE 절에서 특정값 여러개를 선택하는 SQL 연산자
-> 괄호 내의 값 중 일치하는 것이 있으면 TRUE 반환


  • 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디이름을 조회하는 SQL문 (결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다.)
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE ANIMAL_TYPE = 'Dog' and NAME LIKE '%el%'
order by name;

LIKE 절
: 어떤 조건을 만족시키는 컬럼을 찾을 때 사용
-> %와 _ 같은 기호 연산자(wild card)와 함께 사용
-> %는 ‘모든 문자’라는 의미고, _ 는 ‘한 글자’라는 의미
-> 조건에는 문자나 숫자를 포함 가능


  • 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다. 동물의 아이디이름, 중성화 여부아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시해주세요.

1) 첫 번째 방법

SELECT ANIMAL_ID, NAME, IF(SEX_UPON_INTAKE LIKE "Intact%", 'X', 'O') AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

2) 두 번째 방법

SELECT ANIMAL_ID, NAME, 
    CASE
    WHEN SEX_UPON_INTAKE LIKE 'Intact%' THEN 'X'
    ELSE 'O'
    END AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

CASE 문
: 데이터를 범주화 하거나 읽기 쉬운 값으로 바꿔줄 때 사용

CASE 컬럼  
WHEN 조건1 THEN1 
WHEN 조건2 THEN2 
ELSE3 
END 

  • 입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리아이디이름을 조회하는 SQL문
SELECT O.ANIMAL_ID, O.NAME, O.DATETIME - I.DATETIME
FROM ANIMAL_INS I JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY O.DATETIME - I.DATETIME DESC
LIMIT 2;

📍 JOIN은 다른 포스팅에서 정리


  • 각 동물의 아이디이름, 들어온 날짜를 조회하는 SQL문을 작성 (결과는 아이디 순)
  • 들어온 날짜: 시각(시-분-초)을 제외한 날짜(년-월-일)만
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS '날짜'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

DATE_FORMAT(날짜, 형식)
: 날짜를 지정한 형식으로 출력

참고: https://www.w3schools.com/sql/func_mysql_date_format.asp

profile
Grow up everyday

0개의 댓글