过滤器(其中......),可用于Postgres,但不能用于Redshift。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了过滤器(其中......),可用于Postgres,但不能用于Redshift。相关的知识,希望对你有一定的参考价值。

对于Redshift来说,在Postgres中可以实现的过滤器(where...)的替代方案是什么?我得到了以下错误,我无法弄清楚这在Redshift中是否不可能,或者我有一个语法错误:数据库报告了一个语法错误。Amazon Invalid operation: syntax error at or near "(" Position: 1521;

select count(distinct "agent.id")  as "agent_cnt"
, count(distinct "agent.id") filter (where "agent.status" = 'active' and ("agent.date" between '2020-01-01' and current_date)) as "active_agent_cnt"
from "agent" 
答案

使用一个 case 表达式。

count(distinct case when "agent.status" = 'active' and ("agent.date" between '2020-01-01' and current_date then "agent.id" end) as "active_agent_cnt"

在列名中加入句号似乎非常可疑。 我坚决不鼓励这种命名习惯。

以上是关于过滤器(其中......),可用于Postgres,但不能用于Redshift。的主要内容,如果未能解决你的问题,请参考以下文章

MS Access + Postgres 口音/不区分大小写的可编辑过滤器

使用 Postgres 和 SQLAlchemy 过滤数组列

使用Postgres和SQLAlchemy过滤数组列

索引扫描不适用于 postgres 中的 json 数据集

postgres:是不是按返回顺序应用 where 子句过滤器

如何在 django rest 框架中的 postgres JSONField 上应用过滤器?