01 루시와 엘라 찾기
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty');
02 이름에 el이 들어가는 동물 찾기
mysql의 대소문자 구분여부
- 컬럼, 테이블명 : 대소문자 구분O
- VARCHAR,TEXT같은 데이터 : 대소문자 구분X
- 따라서 이 문제의 경우 대소문자 지정을 따로 해주지 않아도 풀리기는 한다(아래처럼)
-
만약 mysql을 쓰지 않을때는 lower, upper를 사용해주면 된다.(mysql에서도 먹힌다)SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE ANIMAL_TYPE = 'Dog' AND NAME LIKE '%el%' ORDER BY NAME;
-
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE ANIMAL_TYPE = 'Dog' AND LOWER(NAME) LIKE "%el%" ORDER BY NAME;
하지만 대소문자를 구분해 가져와야 할 때도 있는데, 이 경우에는 WHERE 절에 BINARY 함수를 추가해주면 된다
- SELECT ~ FROM ~ WHERE BINARY NAME LIKE '%EL%'
BINARY
- 함수, 대소문자를 구별해서 데이터를 불러옴
- WHERE 컬럼명 = BINARY("hello") 라면 값이 소문자인 hello만 불러옴
- WHERE 컬럼명 = "hello" 라면 값이 hello, HELLO 인 것을 모두 불러온다
03 중성화 여부 파악하기
IF절이나 CASE를 활용해 두 가지로 풀이할 수 있다
(1) IF(조건,조건을만족할경우,조건을만족하지않을경우)
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;
(2) CASE WHEN 조건 THEN 조건을만족할경우 ELSE 조건을만족하지않을경우 END (AS 출력할 컬럼명) : 괄호생략가능
SELECT ANIMAL_ID, NAME,
CASE
WHEN SEX_UPON_INTAKE NOT LIKE "Intact%"
THEN "O"
ELSE "X"
END AS "중성화"
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
04 오랜 기간 보호한 동물(2)
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS O
LEFT JOIN ANIMAL_INS I
ON O.ANIMAL_ID = I.ANIMAL_ID
ORDER BY O.DATETIME-I.DATETIME DESC
LIMIT 2;
만약 join이 익숙하지 않다면, 이 문제는 두 테이블을 그냥 불러와서 한 테이블의 결과만 가져와도 된다
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I, ANIMAL_OUTS O
WHERE I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY O.DATETIME - I.DATETIME DESC
LIMIT 2
05 DATETIME에서 DATE로 형변환
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS '날짜'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
형변환 또는 날짜출력 형식은 클릭 을 참고
'Problem Solving > Programmers' 카테고리의 다른 글
[ SQL 고득점 kit ] JOIN - mysql (0) | 2021.06.25 |
---|---|
[ SQL 고득점 kit ] IS NULL - mysql (0) | 2021.06.23 |
[ SQL 고득점 kit ] GROUP BY - mysql (0) | 2021.06.22 |
[ SQL 고득점 kit ] SUM, MAX, MIN - mysql (0) | 2021.06.22 |
[ SQL 고득점 kit ] SELECT - mysql (0) | 2021.06.21 |
댓글