LIKEDISTINCT 는 괄호 없이 사용%,_ 기호 포함하고 싶을 떄는 이스케이프 문자(\) 앞에 붙이기LOWER(), UPPER() 써써 해결DATE_FORMAT(날짜, '%Y-%m-%d')ROUND(), 올림 CEIL(), 내림 FLOOR(), 버림 TRUCNCOALESCE(a, b)는 a가 NULL이면 b를 리턴하는 함수. 누락된 값만 평균으로 대체할 때 씀.CAST(숫자형 AS CHAR) → 숫자형을 문자형으로 변환하는 함수IN (SELECT MAX(x), MAX(y))는 2개 컬럼을 반환하는 서브쿼리라 튜플 비교처럼 작동하지 않음JOIN이나 x = ... AND y = ... 방식을 써야 함ORDER BY FIELD(weekday,'월요일','화요일','수요일','목요일','금요일','토요일','일요일')CASE DAYOFWEEK(measured_at)
WHEN 1 THEN '일요일'
WHEN 2 THEN '월요일'
WHEN 3 THEN '화요일'
WHEN 4 THEN '수요일'
WHEN 5 THEN '목요일'
WHEN 6 THEN '금요일'
WHEN 7 THEN '토요일'
END AS weekday
WITH a AS (
...
), b AS (
...
)
함수() OVER(PARTITION BY 컬럼 ORDER BY 컬럼)RANK(), DENSE_RANK(), ROW_NUMBER(), LEAD(), LAG() 등 합계함수도 가능SUM(pm10) OVER (ORDER BY measured_at ROWS UNBOUNDED PRECEDING)
AVG(pm10) OVER (ORDER BY measured_at ROWS BETWEEN 1 PRECENDING AND 1 FOLLOWING)
ROUND(AVG(zone_quads) OVER
(ORDER BY measured_at ROWS BETWEEN 5 PRECEDING AND CURRENT ROW),2) zone_quads
DATE_ADD(measured_at, INTERVAL 10 MINUTE)
DATE_SUB(날짜, INTERVAL n 단위)
DATEDIFF(날짜1, 날짜2)
TIMESTAMPDIFF(단위, 날짜1, 날짜2)
LEAD() LAG()-- 이렇게 하면 연속쌍 개수가 생김!
LEAD(year,1) OVER(PARTITION BY author ORDER BY year) next
제곱함수 POW(컬럼,2)
루트함수 SQRT()
내가 원하는 문자열까지 자르기
SUBSTR(문자열,시작위치숫자,끝낼위치숫자),
SUBSTRING_INDEX(문자열, 기준, 기준이 몇번 나타날때까지 추출할지 결정(양수면 왼쪽부터, 음수면 오른쪽부터))