首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算平均年龄但在postgres中得到不正确结果的问题

问计算平均年龄但在postgres中得到不正确结果的问题
EN

Stack Overflow用户
提问于 2022-02-02 17:23:47
回答 1查看 70关注 0票数 0

我有一个账户的平均年龄。为此,我使用了以下代码。

代码语言:javascript
复制
select 
  m."storeId", s."locationName",
  COUNT(m."membershipEnded" is not null) as "Cancelations",
  AVG(AGE(m."membershipEnded"::date, m."memberSince"::date)) as "Membership Duration in days"
FROM "members" m
INNER JOIN "stores" s on s."storeId" = m."storeId"
where (m."membershipEnded" is not null 
  and m."membershipEnded"::date > m."memberSince"::date)  
  and "memberSince" is not null 
  and f."countryCode" in ('US','CA') 
  and s."storeStatus" ='Active'
group by 1,2
order by "storeId";

我得到的结果包括无效天数,因此其中一个例子是:“1年35天22:17:08.546743”或另一个例子是“2年9MON 41天13:42:51.453257”。

我到处找遍了,但找到了误判的原因。

任何和所有的帮助都将不胜感激。

我还会注意到,我只是减去这两种方法来得到天数的差异,但我更喜欢那些年、月、日的结果,就像随着年龄的变化一样。

Postgresql版本为10.9

*编辑-用下面的答案回答更新的代码:

justify_interval()很有魅力

代码语言:javascript
复制
select 
  m."storeId", s."locationName",
  COUNT(m."membershipEnded" is not null) as "Cancelations",
  justify_interval(AVG(AGE(m."membershipEnded"::date, m."memberSince"::date))) as "Membership Duration in days"
FROM "members" m
INNER JOIN "stores" s on s."storeId" = m."storeId"
where (m."membershipEnded" is not null 
  and m."membershipEnded"::date > m."memberSince"::date)  
  and "memberSince" is not null 
  and s."countryCode" in ('US','CA') 
  and s."storeStatus" ='Active'
group by 1,2
order by "storeId";
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-02 19:10:05

间隔期的操作可以导致这样的结果,因为操作是在年月、月、日等时间内完成的。

要克服这一问题,请使用justify_interval调整超过数月/日/小时等。

代码语言:javascript
复制
select justify_interval('1 year 35 days 22:17:08.546743'), 
       justify_interval('2 years 9 mons 41 days 13:42:51.453257');
          justify_interval           |            justify_interval
-------------------------------------+-----------------------------------------
 1 year 1 mon 5 days 22:17:08.546743 | 2 years 10 mons 11 days 13:42:51.453257
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70960037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档