我目前有一個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次,該人員非常活躍。如果有人本週沒有登錄,那麼這個人是不活躍的。 –