我试图解决以下问题“给定一个用户会话表,编写一个查询以获取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)),但不幸的是失败了。
1条答案
按热度按时间wz3gfoph1#
提取自1970-01-01 00:00:00-00以来的秒数,然后除以86400,得到天数。