postgresql - Postgres 查询每个用户超过 30 天的登录次数,每天只计算一次
问题描述
我正在编写一个查询来获取用户在过去 30 天内完成的登录次数。
问题是用户每天可以登录多次,但我只想每天计算一个条目。因此,用户的最大返回值为 30。
我可以在 Node 中执行此逻辑,但我很想看看它是否可以在查询中完成
下面是 PID、用户 ID、登录日期时间(按登录顺序)-“登录表”
9 1000000000 2020-12-08 14:01:56
10 1000000000 2020-12-08 14:01:56
8 1000000000 2020-12-09 14:01:56
20 1000000001 2020-12-09 14:04:48
19 1000000001 2020-12-09 14:04:48
18 1000000001 2020-12-09 14:04:48
7 1000000000 2020-12-10 14:01:56
6 1000000000 2020-12-11 14:01:56
16 1000000001 2020-12-11 14:04:48
17 1000000001 2020-12-11 14:04:48
5 1000000000 2020-12-12 14:01:56
24 1000000002 2020-12-12 14:05:46
4 1000000000 2020-12-13 14:01:56
15 1000000001 2020-12-13 14:04:48
14 1000000001 2020-12-13 14:04:48
26 1000000002 2020-12-13 14:05:46
25 1000000002 2020-12-13 14:05:46
3 1000000000 2020-12-14 14:01:56
13 1000000001 2020-12-14 14:04:48
1 1000000000 2020-12-15 14:01:13
2 1000000000 2020-12-15 14:01:56
11 1000000000 2020-12-15 14:01:56
12 1000000001 2020-12-15 14:04:48
21 1000000001 2020-12-15 14:04:48
23 1000000002 2020-12-15 14:05:46
22 1000000002 2020-12-15 14:05:46
查询 - 不确定如何在一天内多次登录时获得 1 个值。分组是行不通的。也许有一个 Windows 函数可以适应这种情况。
select *
from dating.logins
where
userid = 1000000000
and datetime > NOW() - INTERVAL '30 DAY'
order by datetime;
解决方案
那这个呢 :
select userid,
count(distinct date_trunc('day', datetime)) as countLogins
from dating.logins
where
userid = 1000000000
and datetime > NOW() - INTERVAL '30 DAY'
Group by userId;
推荐阅读
- javascript - 角度正确的登录流程和结构
- ruby-on-rails - 查看拉出所有表记录而不是特定的 ID 记录,控制器问题?
- javascript - 在基于 url 的子页面上向主导航链接添加类
- c# - ASP.NET Core 类型化客户端中的 IHttpClientFactory
- python - I am unable to get data from flask forms
- r - 关于将变量添加到包括 NA 在内的比例项目的问题
- python - 在 txt 文件中查找列表的最小值、最大值和平均值
- android - 我应该在图书馆项目中使用 Dagger2 吗?会不会给申请带来问题?
- css - 在 Angular-material 的右侧对齐 more_vert 按钮
- python - Tensorflow:Tensordot 可重现的结果