我想計算用戶活躍的天數。像這樣的查詢
select
a.id,
a.created_at,
CURRENT_DATE - a.created_at::date as days_since_registration,
NOW() as current_d
from public.accounts a where a.id = 3257
回傳
id created_at days_since_registration current_d tot_active
3257 2022-04-01 22:59:00.000 1 2022-04-02 12:00:0.000 0400 2
該人在不到 24 小時前(不到一天前)注冊,但注冊和現在之間有兩個不同的日期。因此,如果用戶在午夜前一小時和午夜后一小時處于活躍狀態,則他在不到一天的時間內活躍兩天(活躍 200% 的天數)
對于兩個小時前 23:00:00 注冊的用戶,計算不同日期并獲得 2 的正確方法是什么?
uj5u.com熱心網友回復:
WITH cte as (
SELECT 42 as userID,'2022-04-01 23:00:00' as d
union
SELECT 42,'2022-04-02 01:00:00' as d
)
SELECT
userID,
count(d),
max(d)::date-min(d)::date 1 as NrOfDays,
count(d)/(max(d)::date-min(d)::date 1) *100 as PercentageOnline
FROM cte
GROUP BY userID;
輸出:
| 用戶身份 | 數數 | nrofdays | 在線百分比 |
|---|---|---|---|
| 42 | 2 | 2 | 100 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/456814.html
標籤:PostgreSQL 日期
下一篇:R-將字串轉換為日期
