【发布时间】:2014-03-18 08:59:04
【问题描述】:
我的 PostgreSQL 中有这张表:
CREATE TABLE visits(
id BIGSERIAL NOT NULL PRIMARY KEY,
timeslot TSRANGE NOT NULL,
user_id INTEGER NOT NULL REFERENCES users(id),
CONSTRAINT overlapping_timeslots EXCLUDE USING GIST (
user_id WITH =,
timeslot WITH &&
));
有了这些数据:
| id | timeslot | user_id |
| 1 | 10.02.2014 10:00 - 10.02.2014 17:00 | 2 |
| 2 | 10.02.2014 18:00 - 10.02.2014 19:00 | 2 |
| 3 | 11.02.2014 01:00 - 11.02.2014 02:00 | 2 |
| 4 | 10.02.2014 12:00 - 11.02.2014 17:00 | 2 |
| 5 | 11.02.2014 12:00 - 11.02.2014 12:30 | 2 |
我需要知道每天有多少用户访问我的商店。如果用户每天访问商店两次,则应计为两次。
在上面的例子中应该是。
Users at 10.02 = 3 (ID: 1,2,4)
Users at 11.02 = 3 (ID: 3,4,5)
【问题讨论】:
-
请定义“每天”。添加您的 Postgres 版本。
标签: sql postgresql select aggregate-functions range-types