[英]Count distinct multiple columns in redshift
我正在嘗試計算在 Amazon redshift 中具有 2 列不同組合的行。 我正在使用的查詢是 -
select count(distinct col1, col2)
from schemaname.tablename
where some filters
它向我拋出了這個錯誤 -
亞馬遜無效操作:函數計數(字符變化,bigint)不存在`
我嘗試將bigint
為char
但沒有用。
您可以使用子查詢和計數
select count(*) from (
select distinct col1, col2
from schemaname.tablename
where some filter
) as t
聚會有點晚,但無論如何:您也可以嘗試使用||連接列 運營商。 它可能效率低下,所以我不會在生產代碼中使用它,但對於臨時分析應該沒問題。
select count(distinct col1 || '_' || col2)
from schemaname.tablename
where some filters
注意分隔符的選擇可能很重要,即'foo' || '_' || 'bar_baz'
'foo' || '_' || 'bar_baz'
'foo' || '_' || 'bar_baz'
和'foo_bar' || '_' || 'baz'
'foo_bar' || '_' || 'baz'
'foo_bar' || '_' || 'baz'
產生'foo_bar_baz'
,因此是相等的。 在某些情況下,這可能是一個問題,在某些情況下,它是如此微不足道,您可以完全跳過分隔符。
您可以使用
select col1,col2,count(*) from schemaname.tablename
where -- your filter
group by col1,col2
如果您只是想count(distinct)
那么 Zaynul 的答案是正確的。 如果您還需要其他聚合,這是另一種方法:
select . . .,
sum(case when seqnum = 1 then 1 else 0 end) as col1_col2_unique_count
from (select t.*,
row_number() over (partition by col1, col2 order by col1) as seqnum
from schemaname.tablename t
where some filters
) c
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.