PostgreSQL 날짜별로 횟수 조회하기(DATE_TRUNC)

 

postgres에서 해당 테이블을 생성합니다.

$ CREATE TABLE users(id INT PRIMARY KEY NOT NULL, name TEXT NOT NULL, created_at TIMESTAMP WITH TIME ZONE DEFAULT now())


이후 아래 레코드를 입력합니다.

$ INSERT INTO users(id, name, created_at) VALUES

(1,'알렉스', '2022-10-12 01:00:00+09'),

(2,'존', '2022-10-12 01:10:00+09'),

(3,'피닉스', '2022-10-12 11:20:00+09'),

(4,'폴', '2022-10-13 01:00:30+09'),

(5,'스카', '2022-10-13 07:30:00+09'),

(6,'알폰스', '2022-10-14 01:00:00+09'),

(7,'미미', '2022-10-15 01:00:00+09'),

(8,'크레이토스', '2022-10-15 01:00:00+09'),

(9,'제우스', '2022-10-15 01:10:00+09'),

(10,'아테나', '2022-10-16 01:00:00+09')


테이블을 조회하면 아래 사진과 같이 나오는 것을 알수 있습니다.



이제 날짜별로 생성된 유저수를 확인할려고 합니다. 현재는 날짜 기준으로 생성날자를 카운트 할려고한다. 문제는 날짜가 같아도 생성 시간이 달라서 GROUP BY를 하지 못합니다. 이때 DATE_TRUNC를 사용합니다.


$ SELECT DATE_TRUNC('day', "created_at") AS date, COUNT(*) FROM users GROUP BY date ORDER BY date DESC;


위 의 쿼리문을 사용한다면 해당 날짜별로 user가 생성된 날짜로 셀수 있습니다. 


또한 'day'가 아닌 'month', 'year'을 이용하면 각각 달, 년별로 생성날짜를 확인할수 있습니다. 

댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)