计算redshift中不同的多个列

Jan*_*z01 8 sql amazon-redshift

我试图计算在Amazon redshift中具有2列的不同组合的行。我正在使用的查询是-

select count(distinct col1, col2)
from schemaname.tablename
where some filters
Run Code Online (Sandbox Code Playgroud)

这让我犯了这个错误-

亚马逊无效操作:函数计数(字符变化,bigint)不存在`

我尝试强制转换bigint为,char但没有成功。

Zay*_*hin 13

您可以使用子查询和计数

select count(*) from (
  select distinct col1, col2 
 from schemaname.tablename
  where some filter
) as t
Run Code Online (Sandbox Code Playgroud)


Mar*_*ski 8

聚会有点晚,但无论如何:您也可以尝试使用||连接列 运营商。它可能效率低下,所以我不会在生产代码中使用它,但对于临时分析应该没问题。

select count(distinct col1 || '_' || col2)
from schemaname.tablename
where some filters
Run Code Online (Sandbox Code Playgroud)

注意分隔符的选择可能很重要,即两者'foo' || '_' || 'bar_baz''foo_bar' || '_' || 'baz'产量'foo_bar_baz'因此相等。在某些情况下,这可能令人担忧,在某些情况下,它是如此微不足道,您可以完全跳过分隔符。