SQL <> 시각화 연습에는
SQLite
카스다녔을 땐Mysql
요즘 듣는 러닝스푼즈는GCP Bigquery
예전에 입문용 공부는oracle
머리가 혼란스러워서 (특히 날짜함수) 정리를 하기로 마음먹었다 🥲
Bigquery
CURRENT_DATE()
- 년월일CURRENT_DATETIME ()
- 년월일시분초MySQL
NOW()
, CURRENT_TIMESTAMP()
- 현재 날짜와 시간 반환CURDATE()
, CURRENT_DATE()
- 현재 날짜 반환CURTIME()
, CURRENT_TIME()
- 현재 시각 반환SQLite
date()
- 년,월,일 반환time()
- 년,월,일,시 반환datetime()
- 년,월,일,시,분,초 반환Bigquery
DATETIME_ADD(시간, INTERVAL N {기준})
- datetimeDATE_ADD(시간, INTERVAL N {기준})
- dateMySQL
ADDDATE(시간, INTERVAL N {기준})
- dateADDTIEM(시간, INTERVAL N {기준})
- datetimeSQLite
datetime(시간, '+ n {기준}', '+ n {기준}'..)
Bigquery
DATE_SUB(시간, INTERVAL N {기준})
- dateDATE_DIFF(시간1, 시간2, {기준})
- 시간1에서 시간2를 빼기 dateDATETIME_SUB(시간, INTERVAL N {기준})
- datetimeDATETIME_DIFF(시간1, 시간2, {기준})
- 시간1에서 시간2를 빼기 datetimeMySQL
SUBDATE(시간, INTERVAL N {기준})
- dateSUBTIEM(시간, INTERVAL N {기준})
- datetimeDATEDIFF(date1, date2)
- 두 날짜 사이의 일수를 숫자로 반환(date1 - date2)TIMEDIFF(time1, time2)
- 두 시간의 차이를 datetime 형태로 반환(time1 - time2)TIMESTAMPDIFF({기준}, 날짜1, 날짜2)
- 날짜2-날짜1SQLite
Bigquery :DATETIME_TRUNC(시간, {기준})
MySQL
DATE_TRUNC('날짜', '남기는 부분')
DATETIME_TRUNC( '날짜', '남기는 부분')
TIMESTAMP_TRUNC( '날짜', '남기는 부분')
SQLite
Bigquery : EXTRACT({기준} FROM 시간)
MySQL
SQLite
Bigquery
date(시간컬럼)
- 년, 월, 일FORMAT_DATETIME({요소}, 시간)
- datetimeFORMAT_DATE(요소}, 시간)
- dateMySQL
DATE_FORMAT(시간,{요소})
SQLite
CHAR_LENGTH(COL1)
: 문자열길이반환
CONCAT(COL1,’텍스트’)
: 문자열 합치기
REPLACE(COL1,”대상 텍스트”, “바뀌는 내용”)
: 문자열 바꾸기
REFT(COL1,3)
: 문자열 슬라이스 - 왼쪽에서 3번째
RIGHT(COL1,3)
: 문자열 슬라이스 - 오른쪽에서 3번째
SUBSTR(COL1,2,2)
: 문자열 슬라이스 - 2번째 문자에서 시작해서 2개까지
UPPER(COL1)
– 대문자 변환
LOWER(COL1)
– 소문자 변환
TRIM(문자열)
– 양쪽 공백삭제
RTRIM(문자열)
– 오른쪽 공백 삭제
LTRIM(문자열)
– 왼쪽 공백 삭제
row_number : 동일 값 상관없이 차례대로 순위 ex)1,2,3,4,5
rank : 동일값은 같은 순위로 하되 아래 순위 건너뜀 ex)1,2,3,3,5
dense_rank : 동일값 같은 순위, 아래순위 건너뛰지 않음 ex)1,2,3,3,4
SUM : 합 / order by 사용 시 누적합
MAX : 최대값
MIN : 최소값
AVG : 평균값
COUNT : 갯수 / order by 사용 시 누적평균 / ROWS BETWEEN N PRECEDING AND CURRENT ROW 시 이동평균
FIRST_VALUE : 첫번째값
LAST_VALUE : 마지막값
LAG : N번째 앞 값 ex) lag(order_date,1)
LEAD : N번째 뒤 값 ex) LEAD(order_date,1)
PERCENT_RANK : 특정 범위 내에서 맨 윗 행을 0, 맨 아래 행을 1로 하여 각 행의 위치를 백분율로 나타낸 값
CUME_DIST : 특정 범위 안에서 해당 ROW의 누적 백분위를 구하는 것(맨 윗 행도 집계에 포함)