从 Snowflake 中的 Postgres 复制 FILTER 子句

myl*_*scc 5 sql snowflake-cloud-data-platform conditional-aggregation

Postgres 有一个非常有用的方法,叫做FILTERSnowflake 中似乎没有。在 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
Run Code Online (Sandbox Code Playgroud)

你会如何在雪花中做到这一点?有没有这么简洁的方法来做到这一点?

可能是一个非常基本的问题,但我对雪花世界相当陌生,之前只真正做过 Postgres。感谢您提前提供任何帮助!

Tim*_*sen 7

是的,您可以使用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;
Run Code Online (Sandbox Code Playgroud)

  • 好的,非常感谢!我认为可能有更简洁的方法,但这会起作用。谢谢您的帮助 (2认同)