in 연산을 이용한 tuple 내 포함 여부 필터링
select ANIMAL_ID, NAME, SEX_UPON_INTAKE
from ANIMAL_INS
where NAME in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
order by ANIMAL_ID
like 연산을 이용한 문자열 부분일치 여부 필터링
select ANIMAL_ID, NAME
from ANIMAL_INS
where ANIMAL_TYPE = 'Dog' and NAME like '%el%'
order by NAME
like의 우변 string에는 부분일치 필터링 대상을 입력
'_'는 길이 1의 모든 letter에 일치
'%'는 모든 길이 모든 string에 일치
%로 스플릿해서 사이의 string마다 일치 여부를 확인하고
탐색이 패턴의 마지막까지 도달하면 True를 return하는 구조인 것 같다.
함수 timestampdiff()를 이용한 datetime type의 diff 구하기
select INS.ANIMAL_ID, INS.NAME
from (
ANIMAL_INS INS join ANIMAL_OUTS OUTS
on INS.ANIMAL_ID = OUTS.ANIMAL_ID
)
order by timestampdiff(SECOND, INS.DATETIME, OUTS.DATETIME) desc
limit 2
timestampdiff()의 첫째 인자는 diff를 측정한 단위. SECOND, DATE 등등 많다. 나머지 두 인자는 비교대상
datediff()라고 두개의 인자만 받는 date diff 측정 함수도 있다고 한다.
timestampdiff(DATE, A, B) = datediff(A, B)인 셈
datetime을 format에 맞게 출력
select ANIMAL_ID, NAME, date_format(DATETIME, '%Y-%m-%d') 날짜
from ANIMAL_INS
어떤 포맷들이 가능한지는 https://www.w3schools.com/sql/func_mysql_date_format.asp에 있다.
마지막 파트는 해결력보다도 경험, 숙련의 영역에 있는 분야 같다.
쓰면 유용한 함수나 포맷들이 잔뜩 있어서 그중 골라 쓰는?
클로즈북이면 저 포맷들을 다 외워야할텐데 다행히도 오늘 볼 코테는 오픈북 ㅎㅎ
'PS 공부 기록' 카테고리의 다른 글
프로그래머스 SQL 고득점 Kit 5/6 : JOIN (0) | 2022.03.31 |
---|---|
프로그래머스 SQL 고득점 Kit 4/6 : IS NULL (0) | 2022.03.31 |
프로그래머스 SQL 고득점 Kit 3/6 : GROUP BY (0) | 2022.03.31 |
프로그래머스 SQL 고득점 Kit 2/6 : SUM, MAX, MIN (0) | 2022.03.31 |
프로그래머스 SQL 고득점 Kit 1/6 : SELECT (0) | 2022.03.31 |