为什么在 Snowflake/Redshift 中按空白字符串分组会忽略长度?

问题描述 投票:0回答:1

假设您有一个疑问:

SELECT table.blank_names FROM table GROUP BY table.blank_names

在本例中,

blank_names
是一列不同长度的空白字符串(长度为 1 的“ ”、长度为 3 的“ ”等)。

为什么在 Redshift 和 Snowflake 中此查询仅返回 1 行?如果删除

GROUP BY
,查询将返回表中的行数。

BigQuery 的运作方式有所不同。如果您假设

blank_names
具有
x
不同长度的空白字符串,则查询将返回
x
行。

有谁知道我如何解决这个问题或者为什么会出现这种情况?

细节解释了我的尝试和我的期望。

sql amazon-web-services group-by snowflake-cloud-data-platform amazon-redshift
1个回答
0
投票

为什么在 Redshift 和 Snowflake 中此查询仅返回 1 行?如果 删除 GROUP BY 查询返回行数 表。

这不是 Snowflake 中分组的工作原理。如果您有空白字符串或仅包含空格的字符串(根据您的示例),它们将形成单独的组:

with X as
(
  select 1 as VAL, '' as STR1 
  union all
  select 2, ' '
  union all
  select 3, '  '
)
select sum(VAL) as SUM_VAL from X group by STR1
;
SUM_VAL
1
2
3
© www.soinside.com 2019 - 2024. All rights reserved.