Snowflake 中的列表排序作为选择的一部分

Ome*_*ham 4 snowflake-cloud-data-platform

让我们假设我必须执行以下查询

select column1, count(*) from (values ('a'), ('b'), ('ab'), ('ba')) group by 1;

COLUMN1 COUNT(*)
a   1
b   1
ba  1
ab  1
Run Code Online (Sandbox Code Playgroud)

我希望我的分组对顺序不敏感意味着我想将ab和计数ba为相同的值。所以预期的结果将是

COLUMN1 COUNT(*)
a   1
b   1
ab  2
Run Code Online (Sandbox Code Playgroud)

我考虑过对选择进行排序,以便它将它们处理为相同的值,但我没有找到任何选项来对雪花中的值进行排序。

Gre*_*lik 11

可能有一种方法可以在 SQL 中执行此操作,但 JavaScript UDF 使其变得简单:

create or replace function SORT_STRING(TEXT string)
returns string
language javascript
strict immutable
as
$$
    return TEXT.split('').sort().join('');
$$;

select SORT_STRING(column1) SORTED_C1, count(*) 
from (values ('a'), ('b'), ('ab'), ('ba')) group by 1;
Run Code Online (Sandbox Code Playgroud)
已排序_C1 数数(*)
A 1
1
ab 2