如何在POSTGRESQL中计算用户第一次和最后一次会话之间的天数(无日期差异)

68bkxrlz  于 2023-05-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(135)

我试图解决以下问题“给定一个用户会话表,编写一个查询以获取2020年每个用户第一次和最后一次会话之间的天数”(可以在所附图像中查看完整问题详细信息)。
使用POSTGRESQL,但没有Datediff就没有什么运气。你能告诉我如何通过POSTGRESQL解决这个问题吗?Question details
在MySQL中,我使用以下查询来解决它:

select user_id,
datediff(max(date(created_at)),min(date(created_at))) as noofdays
from user_sessions
where Year(created_at)=2020
group by 1
order by 1;

来解决它
我不能复制的逻辑在POSTGRE和我最好的尝试是

select user_id,
Extract(day from age(max(created_at),min(created_at))) as noofdays
from user_sessions
Where Extract(YEAR FROM created_at)=2020
group by user_id
order by user_id

但结果却不同。
但结果却不同:

user_id天数

3             18

4             2

5             15

7             15

9             26

与预期输出相比

noofday
user_id天数

3               323

4               247

5               320

7               228

9               240

请你能告诉我如何解决这个问题,我做错了什么,我试了一整天,但我卡住了。我还尝试了Date_part('day',max(created_at)-min(created_at)),但不幸的是失败了。

wz3gfoph

wz3gfoph1#

提取自1970-01-01 00:00:00-00以来的秒数,然后除以86400,得到天数。

(Extract(epoch from age(max(created_at),min(created_at))) / 86400) as days

相关问题