雪花中允许的子查询

时间:2020-11-03 11:58:33

标签: snowflake-cloud-data-platform

在Snowflake文档中,它列出了受支持的子查询的类型Types Supported by Snowflake

  • 不相关的标量子查询在可以使用值表达式的任何位置。
  • WHERE子句中的相关标量子查询。
  • WHERE子句中的
  • EXISTS,ANY / ALL和IN子查询。这些 子查询可以是相关的,也可以是不相关的。

但是,在有关windows functions的文档中(作为示例),它给出了此SQL,该SQL可以正确运行:

select branch_id,
       net_profit as store_profit,
       (select sum(net_profit) from store_sales as s2 where s2.city = s1.city) as city_profit,
       store_profit / city_profit * 100 as store_percentage_of_city_profit
    from store_sales as s1
    order by branch_id;

据我了解:

  • city_profit由子查询定义,并且该子查询是关联的(引用S1)
  • 有关允许子查询的3条规则中的任何一条均未涵盖(它不是不相关的,它不在WHERE子句中,也不是“ WHERE子句中的EXISTS,ANY / ALL和IN子查询” < / li>

因此查询应该是无效的,但由于不是,我显然缺少了一些内容。我误会了什么?

1 个答案:

答案 0 :(得分:0)

相关子查询是任何SQL数据库的复杂主题。话虽如此,当您发现Snowflake不断提高对相关子查询的支持时,您不会感到惊讶。

查看这些文档,他们从没有说过禁止SELECT级别的相关子查询-实际上Snowflake可以在示例中运行该查询。

如果您找到无法与相关子查询一起运行的查询,请为Stack Overflow带来一个可重现的示例-我们将共同努力寻找解决方案