我目前有一个accounts
表和一个account_activity
表。 accounts
表的相关列为id
。在account_activity
表中,我有id
,account_id
,action_name
和occured
列。每次登录的用户数量每周计数
我希望能够绘制的多少用户登录的0次,1次,2次,n
次在给定时间内的图形(可以说WHERE occured BETWEEN now() AND now() - interval '1 week'
)
据我得到的选择每个用户登录,使用下面的查询量:
SELECT
a.id,
count(aa.*) AS logins
FROM
account a
LEFT JOIN
account_activity aa
ON
a.id = aa.account_id AND
aa.action_name = 'logIn'
GROUP BY
a.id
这返回的id
S和logins
计数的列表。现在,我要选择具有登录每个帐户数高于n
被归类为n
,所以:
SELECT
a.id,
LEAST(count(aa.*), 10) AS logins
FROM
account a
LEFT JOIN
account_activity aa
ON
a.id = aa.account_id AND
aa.action_name = 'logIn'
GROUP BY
a.id
在这种情况下,logins
永远不会(查询10)高于n
。完全是我想要的方式。但结果现在需要我手动遍历所有行,将它们插入到一个临时对象,并增加从0
每个键的计数n
其中row['logins'] == key
我想获得这样的结果:
| logins | count |
|--------|-------|
| 0 | 10 |
| 1 | 130 |
| 2 | 14 |
| ... | ... |
| n | 1830 |
我不知道我怎么会能够做到这一点在PGSQL
我已经阅读了这3次,并且无法在给定的时间范围要求中通过0次,1次,2次,n次登录的_how多个用户。需求中还有其他的东西吗? –
我希望能够看到有多少用户处于活动状态。如果有人在上周内登录了10次,该人员非常活跃。如果有人本周没有登录,那么这个人是不活跃的。 –