【发布时间】:2018-09-06 14:57:50
【问题描述】:
我正在运行 Postgres 9.6。我有一个用户表:
id | integer | | not null | nextval('user_id_seq'::regclass)
name | character varying | | not null |
我有一个history 表:
actioned_by | integer | | |
category | character varying | | not null |
t_actioned | timestamp without time zone | | not null |
我想要一种使用整数字段 num_days 来注释每个用户的方法,该字段指示他们在 24 小时内有多少不同的时间段有操作。
我知道如何获取每个用户活跃的不同日历天数:
SELECT d.actioned_by, COUNT(*) AS cnt FROM
(SELECT date_trunc('day', t_actioned) AS day, actioned_by
FROM history
GROUP BY day, actioned_by) d
GROUP BY actioned_by
ORDER BY cnt DESC;
但是有没有办法测量这些时间段,从他们第一次行动的时间开始计算,以允许在五分钟到午夜登录并在 10 分钟后离开的人?
我只是出于分析目的偶尔运行它,所以它是否很慢并不重要。
【问题讨论】:
-
@a_horse_with_no_name 不要认为这是重复的。在另一个问题中,询问如何按特定时间间隔分组。这里的问题略有不同:计算与行数无关的间隔。
标签: postgresql group-by