当数据记录为会话时,如何在postgresql中生成负载报告?
我有一个包含会话的数据库:主要是:当数据记录为会话时,如何在postgresql中生成负载报告?,sql,postgresql,Sql,Postgresql,我有一个包含会话的数据库:主要是: user, date_first, date_last john, 2015-01-01, 2015-08-23 john, 2015-07-02, 2016-09-01 mary, 2015-01-01, 2015-01-03 我想生成一个报告,告诉我每天/每周/每月有多少用户登录 只有通过PostgreSQL中的SQL才能做到这一点吗 月度报告的预期产出: Month, Users 2015-01, 25 2015-02, 50 2015-03,
user, date_first, date_last
john, 2015-01-01, 2015-08-23
john, 2015-07-02, 2016-09-01
mary, 2015-01-01, 2015-01-03
我想生成一个报告,告诉我每天/每周/每月有多少用户登录
只有通过PostgreSQL中的SQL才能做到这一点吗
月度报告的预期产出:
Month, Users
2015-01, 25
2015-02, 50
2015-03, 12
使用级数生成函数是可能的。月份报告示例:
SELECT TO_CHAR(g.d, 'YYYY-MM') AS Month, COUNT(*) AS Users
FROM generate_series(
(select date_trunc('month', MIN(date_first)) from sessions),
(select MAX(date_last) from sessions), '1 month') AS g(d)
INNER JOIN sessions s
ON (g.d, g.d + interval '1 month' - interval '1 day')
OVERLAPS (s.date_first, s.date_last)
GROUP BY 1
HAVING COUNT(*) > 0
ORDER BY 1
这是一个样品
类似地,您可以为天和周报告编写查询。date_first和
date_last
的意思是什么?date_first是会话开始的时间,date_last是会话完成的时间。这意味着在此时间间隔内,用户处于活动状态。