[SQL] 데이터 분석, 입문 _ 시간값 필터링

강지영·2023년 2월 20일
0

📚 시간값 필터링

시간을 기준으로 데이터를 가져오는 것
집계함수와 함께 가장 기본이 되는 데이터 분석 스킬
ex) 지난 한 달간 카드 사용 내역, 겨울 시즌 가장 반품이 많은 물품, 휴가철에 가장 많이 팔린 비행기 표 etc...

자주 사용되는 3가지 방법
비교 연산자(Compaarison Operators) | EXTRACT() | TO_CHAR()

  • Timestamptz(시간값의 형식)
    DATE TIME TZ(TIMEZONE)
    2023-02-20 12:19:15+09

// TZ(TIME ZONE)
영국을 기준으로 한 시간 차이

EXTRACT() 사용법

  • EXTRACT() : 시간값에서 특정 속성 숫자로 추출!
SELECT
	created_at,									-- TIMESTAMPTZ
    EXTRACT(YEAR			FROM created_at),	-- 년도
    EXTRACT(MONTH			FROM created_at),	-- 월
    EXTRACT(DAY				FROM created_at),	-- 일
    EXTRACT(HOUR			FROM created_at),	-- 시
    EXTRACT(MINUTE			FROM created_at),	-- 분
    EXTRACT(SECOND			FROM created_at),	-- 초
    EXTRACT(TIMEZONE_HOUR	FROM created_at),	-- 타임존 시
FROM
	테이블명
WHERE
	 조건

TO_CHAR() 사용법

  • TO_CHAR() : 특정 값을 다양한 형식의 문자로 바꿈!
SELECT
	created_at,							-- TIMESTAMPTZ
    TO_CHAR(created_at,	'YYYY-MM-DD'),	-- 날짜1
    TO_CHAR(created_at,	'YYYY/MM/DD'),	-- 날짜2
    TO_CHAR(created_at,	'HH24:MI:SS'),	-- 시간
    TO_CHAR(created_at,	'TZH')			-- 타임존 시
FROM
	테이블명
WHERE
	 조건

2022년 1월의 순수익(이체 총합) > 비교 연산자

SELECT
	SUM(amount)
FROM 
	transactions
WHERE
	created_at >= '2022-01-01'	-- 1월 1일 이후의 데이터
	AND
	created_at < '2022-02-01'
;

2021년 12월의 순수익 > EXTRACT()

  • EXTRACT() : 시간값에서 특정 속성을 숫자로 추출!
    -- 2021-12-01 10:00:21+09 => YEAR(2021)
    -- 2021-12-01 10:00:21+09 => MONTH(12)
-- 2021년 12월의 순수익
SELECT
	-- EXTRACT() : 시간값에서 특정 속성을 숫자로 추출!
	-- 2021-12-01 10:00:21+09 => YEAR(2021)
	-- 2021-12-01 10:00:21+09 => MONTH(12)
	SUM(amount)
FROM
	transactions
WHERE
	EXTRACT(YEAR FROM created_at) = 2021
	AND
	EXTRACT(MONTH FROM created_at) = 12;

2021년 11월의 순수익 > TO_CHAR()

  • TO_CHAR() : 특정값을 다양한 형식 문자로 바꿔!
    -- 2021-11-01 10:02:48+09 => '2021-11'
-- 2021년 11월의 순수익
SELECT
	SUM(amount)
FROM
	 transactions
WHERE
	-- TO_CHAR() : 특정값을 다양한 형식 문자로 바꿔!
	-- 2021-11-01 10:02:48+09 => '2021-11'
	TO_CHAR(created_at, 'YYYY-MM') = '2021-11';

2021년 11월과 2022년 1월의 총 순수익

-- 2021년 11월과 2022년 1월의 합산 순수익
SELECT
	SUM(amount)
FROM
	transactions
WHERE
	TO_CHAR(created_at, 'YYYY-MM') = '2021-11'
	OR
	TO_CHAR(created_at, 'YYYY-MM') = '2022-01';
profile
Hello World!

0개의 댓글