假设您有一个疑问:
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
行。
有谁知道我如何解决这个问题或者为什么会出现这种情况?
细节解释了我的尝试和我的期望。
为什么在 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 |