基本上,我需要使用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.我不知道如何将日期条件纳入此查询。
任何建议,请多多指教。
答案 0 :(得分:0)
您似乎想要0
:
count(distinct date)