我需要按日期范围为已登录的用户制作一份报告,但在同一天没有重复(如果有人在同一天登录两次,我们不会将其列出两次)。不幸的是,我们将登录信息保留为json(是的,我无法将其更改为单独的表,我不知道这个db是谁设计的)。查询以查看所有登录的用户:
select a.id, username, email, ah.modified as login_date
from accounts a join
account_history ah
on modified_acc_id = a.id
where ah.data::jsonb->>'message' = 'Logon';
Run Code Online (Sandbox Code Playgroud)
修改为带时区的时间戳,用作登录日期。
我只找到了每天计数不同 id 的示例,但我不知道如何修改它以每天返回不同的结果
样本数据:
id | username | email | login_date
-----+-------------------------+---------------------------------+----------------------------
102 | example | example@example.com | 2018-12-06 09:30:10.573+00
102 | example | example@example.com | 2018-12-06 09:32:34.235+00
42 | rafal | rafal@example.com | 2018-12-06 09:45:24.884+00
576 | john | john@example.com | 2018-12-06 09:35:24.922+00
576 | john | john@example.com | 2018-12-07 09:58:04.253+00
Run Code Online (Sandbox Code Playgroud)
想要的数据:
id | username | …Run Code Online (Sandbox Code Playgroud)