使用具有用户定义条件的Count从sql生成频率表

时间:2019-07-12 21:32:37

标签: sql count amazon-redshift

基本上,我需要使用sql生成频率表,并且我有一个像这样的示例表:

user_id   user_label     code1      date    
------   -----------    -----    ------  
1        x              a        01-01
1        x              a        01-01
1        x              a        01-02
1        x              b        01-01
1        x              c        01-02
1        y              a        01-01
2        x              a        01-01

计数发生次数的规则是,如果两行具有相同的user_id,user_label和date,则重复的代码应仅计数一次。

例如,对于前两行,频率表应为:

user_id      user_label   code1   count_code_1
--------     -----------  -----   ------------
1            x            a       1

由于a的两个实例,但是它们发生在同一日期,因此只应计数一次,因此我需要对code_1列中的每个唯一代码执行此操作 适用于user_id + user_label

的所有组合

处理完第三行后,频率表应为:

user_id      user_label   code_1   count_code_1
--------     -----------  ------   ------------
1            x            a        2

由于代码相同('a'),但发生在不同的日期(01-02)

最后,对于上面给出的样本表,期望的结果应该是

user_id      user_label   code_1   count_code_1
--------     -----------  ------   -------------
1            x            a        2
1            x            b        1
1            x            c        1
1            y            a        1
2            x            a        1 

到目前为止,我是

select t.user_id, t.user_label, t.code_1, count(###)
from t 
group by t.code_1,t.user_id, t.user_label 

问题是
1.我不知道要在计数中放入什么
2.我不知道如何将日期条件纳入此查询。

任何建议,请多多指教。

1 个答案:

答案 0 :(得分:0)

您似乎想要0

count(distinct date)