首页 > 解决方案 > PostgreSQL 查询间隔数据

问题描述

我正在尝试执行一个我不知道如何编写的查询。我有一张claims桌子

claims table:
 - id
 - date_received

我想获取超过 30 天每天的新索赔计数。我试图想出的天真的解决方案就是这个。

select count(*) 
  from claims
  where date_received 
    BETWEEN CURRENT_DATE - interval '1 month' 
        AND CURRENT_DATE
  group by date_received;

这有效,但它按确切的时间戳分组,而不是同一天。我怎样才能让它在同一天分组?

编辑

我能够计算出我们更新的查询:

select date_received::date as date, count(id) as new_claims
  from claims 
  where date_received BETWEEN CURRENT_DATE - interval '1 month'
              AND CURRENT_DATE
  group by date_received::date 
  order by date;

标签: sqlpostgresql

解决方案


基于 Gordon 的回答,您可以使用它date_trunc(precision, timestamp)来获得您想要的东西:

select date_received::date, count(*)
from claims
where date_received >= 
      date_trunc('day', CURRENT_DATE - interval '1 month') 
  and date_received < CURRENT_DATE
group by date_received::date
order by date_received::date;

有关详细信息,请参阅date_trunc()


推荐阅读