Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터 증식
- ImageDateGenerator
- 스태킹 앙상블
- tableau
- 데이터 정합성
- 마케팅 보다는 취준 강연 같다(?)
- DENSE_RANK()
- ARIMA
- XGBoost
- 분석 패널
- 그로스 해킹
- 데이터 핸들링
- WITH ROLLUP
- 그로스 마케팅
- 리프 중심 트리 분할
- 그룹 연산
- pmdarima
- lightgbm
- 부트 스트래핑
- splitlines
- 컨브넷
- python
- 3기가 마지막이라니..!
- 캐글 산탄데르 고객 만족 예측
- sql
- Growth hacking
- WITH CUBE
- 로그 변환
- 인프런
- 캐글 신용카드 사기 검출
Archives
- Today
- Total
LITTLE BY LITTLE
[4] 데이터 분석 SQL 실습 - Date의 Timestamp의 date_trunc() 본문
date와 timestamp 복습 https://noelee.tistory.com/180
date_trunc 함수를 이용하여 년/월/일/시간/분/초 단위 절삭하기
select trunc(99.9999, 2);
>> 99.99
--date_trunc는 인자로 들어온 기준으로 주어진 날짜를 절삭
select date_trunc('day', '2023-11-19 21:50:26'::timestamp)
>> 2023-11-19 00:00:00.000
date타입은 date_trunc하면 타입이 timestamp로 바뀌기 때문에, 유지하고 싶을 경우 ::date로 변환해주기
-- date타입을 date_trunc해도 반환값은 timestamp타입임.
select date_trunc('day', to_date('2022-03-03', 'yyyy-mm-dd')) as date_01;
-- 만약 date 타입을 그대로 유지하려면 ::date로 명시적 형변환
select date_trunc('day', '2023-11-19'::date)::date as date_01
>> 2023-11-19
-- 월, 년으로 절단.
select date_trunc('month', '2023-11-19'::date)::date as date_01;
>>2023-11-01
-- week의 시작 날짜 구하기. 월요일 기준.
select date_trunc('week', '2023-11-19'::date)::date as date_01;
>> 2023-11-13
-- week의 마지막 날짜 구하기. 월요일 기준(일요일이 마지막 날짜)
select (date_trunc('week', '2023-11-19'::date) + interval '6 days')::date as date_01;
>>2023-11-19
-- week의 시작 날짜 구하기. 일요일 기준.
select date_trunc('week', '2023-11-19'::date)::date -1 as date_01;
>> 2023-11-12
-- week의 마지막 날짜 구하기. 일요일 기준(토요일이 마지막 날짜)
select (date_trunc('week', '2023-11-19'::date)::date - 1 + interval '6 days')::date as date_01;
>> 2023-11-18
-- month의 마지막 날짜
select (date_trunc('month', '2023-11-19'::date) + interval '1 month' - interval '1 day')::date;
>> 2023-11-30
-- 시분초도 절삭 가능.
select date_trunc('hour', now());
>> 2023-11-19 21:00:00.000 +0900
date_trunc는 연,월,일 단위로 Group by 적용 시 자주 사용된다.
drop table if exists hr.emp_test;
-- current_time을 hiretime으로 추가
create table hr.emp_test
as
select a.*, hiredate + current_time as hiretime
from hr.emp a;
select * from hr.emp_test;
-- 입사월로 group by
select date_trunc('month', hiredate) as hire_month, count(*)
from hr.emp_test
group by date_trunc('month', hiredate);
-- 시분초가 포함된 입사일일 경우 시분초를 절삭한 값으로 group by
select date_trunc('day', hiredate) as hire_day, count(*)
from hr.emp_test
group by date_trunc('day', hiredate);
section4 Group by 와 집계함수 이어서
'SQL > SQL 강의' 카테고리의 다른 글
Comments