Postgresql 无法解释的结果 - 使用 timestamptz::date

Postgresql Unexplained Results - Using timestamptz::date

请参阅 POST 结尾以获取更新。

参考下面的 table,我想编写一个查询:

1 - 排除 bool 设置为 false 的所有行

2 - 将时间(这是一个 timestamptz)转换为日期(我们称之为 'D')

3 - 按两列分组(组和 D)并计算行数

group,  time,                               bool
grp-A,  2020-08-28 13:23:00.000000 +00:00,  true 
grp-A,  2020-08-28 10:19:00.000000 +00:00,  false
grp-A,  2020-08-28 09:23:00.000000 +00:00,  true      
grp-B,  2020-08-28 13:51:00.000000 +00:00,  true
grp-B,  2020-08-27 22:35:00.000000 +00:00,  true
grp-B,  2020-08-27 15:10:00.000000 +00:00,  true
grp-B,  2020-08-27 22:06:00.000000 +00:00,  false
grp-A,  2020-08-27 13:03:00.000000 +00:00,  true 

答案应该是:

 group,  time,       count(*)
 grp-A,  2020-08-28, 2  
 grp-B,  2020-08-28, 1
 grp-A,  2020-08-27, 1
 grp-B,  2020-08-27, 2

我尝试使用的查询如下:

select group, time::date D, count(*)
from table
where bool = True
group by group,D;

但是它returns的结果是错误的。计数不正确,它似乎得到 random/lower 个数字。

有什么我在这方面出错的想法吗?提前致谢!

重要!编辑:我已将此问题隔离到查询的 time::date 部分。我写了一个新查询:

select time::date 
from table

当我执行它时,它 returns 一个日期列表,但不是所有日期 - 只有一些!有谁知道为什么会这样?

你可以试试下面的-

select grpval, cast(time as date), count(*)
from tablename
where boolval = true
group by grpval, cast(time as date)