微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决PostgreSQL无法解释的结果-使用timestamptz :: date

请查看发布结束以进行更新。

参考下表,我希望编写一个查询

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

2-将时间(这是时间戳记)更新为日期(我们将其称为“ 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,2020-08-27 15:10:00.000000 +00:00,2020-08-27 22:06:00.000000 +00:00,2020-08-27 13:03:00.000000 +00:00,true 

答案应该是:

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

我尝试使用的查询如下:

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

但是它返回错误的结果。计数不正确,似乎是随机数/小数。

有什么想法让我错了吗?预先谢谢你!

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

select time::date 
from table

当我执行此操作时,它返回日期列表,但不是所有日期-只有一些!有人知道为什么会这样吗?

解决方法

您可以尝试以下-

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。