我有一个巨大的表,其中包含操作的开始时间(开始时间)+ 启动它的用户(登录名)+ 很多日期,这对于我需要的查询来说并不重要。
从那我想将时间分组为 10 分钟的时间间隔,然后计算该 10 分钟时间片的不同登录名。
到目前为止,我有这个:
SELECT
to_timestamp( extract ( 'epoch' from starttime)::int / (600) * 600 ) AS timeslice,
loginname
from request
where starttime >= '2013-06-11 00:00:00' and starttime < '2013-06-11 01:00:00'
group by timeslice, loginname
order by timeslice asc
这给了我 10 分钟的时间片,每个唯一用户一行,我如何在每个时间片中获得一行唯一用户数?
我有一些想法,但它们并不漂亮/快速……如果可能的话,我想学习做出更好/更快的查询;-)
数据库是 RHEL 5.4 上的 PostgreSQL 8.1.18