从雪花中的 Postgres 复制 FILTER 子句
Posted
技术标签:
【中文标题】从雪花中的 Postgres 复制 FILTER 子句【英文标题】:Replicating FILTER clause from Postgres in Snowflake 【发布时间】:2020-03-15 06:40:25 【问题描述】:Postgres 有一个非常有用的方法,称为 FILTER
,它似乎不在 Snowflake 中。在 Postgres 中它是这样工作的:
SELECT
user_id,
MIN(orders.started_at) FILTER (WHERE orders.sequence_in_subscription = 1) as time_of_t1
FROM platform.orders
GROUP BY 1
你会如何在 Snowflake 中做到这一点?有这么简洁的方法吗?
可能是一个相当基本的问题,但我对 Snowflake 世界还很陌生,之前只真正做过 Postgres。提前感谢您的帮助!
【问题讨论】:
还有IFF,一种写case语句的更短的方式。以 ***.com/a/55716546/1335793 为例查看其他问题 【参考方案1】:是的,您可以使用CASE
表达式代替FILTER
子句:
SELECT
user_id,
MIN(CASE WHEN orders.sequence_in_subscription = 1 THEN orders.started_at END) AS time_of_t1
FROM platform.orders
GROUP BY
user_id;
【讨论】:
好的,非常感谢!我认为可能有更简洁的方法,但这会奏效。感谢您的帮助以上是关于从雪花中的 Postgres 复制 FILTER 子句的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Postgres Hstore 数据类型转换为雪花对象或变体