计算特定级别(在交易数据中)的次数,然后将其聚合为新变量的次数(每个客户一行下)
我有两个级别的招揽方法,电话和电子邮件。我创建了2个新列,用于计算每个ID发送电话或电子邮件的次数。现在我有交易数据,无法弄清楚如何去做。数据在左边,我想要的是在右边。我可以在右侧使用两种输出。 到目前为止我试过这个。返回错误
create table d.email as
select ID, email_count
from d.emai
where email_count = (select count (*)
from d.email
group by ID
having SolicitMethod = 'Email' );
quit;
答案 0 :(得分:0)
我不确定你真正想做什么,但你可以通过使子查询成为相关的子查询来修复语法错误:
create table d.email as
select ID, email_count
from d.emai e
where email_count = (select count(*)
from d.email e2
where e2.SolicitMethod = 'Email' and e2.id = e.id
);
我认为第一个from
中的引用应为d.emai
。
答案 1 :(得分:0)
可以使用此查询获取第一个输出:
按ID对行进行分组,然后计算每个SolicitMethod上的行数
SELECT id
, SUM(CASE
WHEN SolicitMethod = 'Email' THEN 1
ELSE 0
END) count_email
, SUM(CASE
WHEN SolicitMethod = 'phone' THEN 1
ELSE 0
END) count_phone
FROM d.email
GROUP BY id
此第二个输出查询取决于您的dbms和分析功能的可用性:
它依靠每一行id 的sollicitMethod计数每行
SELECT id
, SUM(CASE
WHEN SolicitMethod = 'Email' THEN 1
ELSE 0
END)
OVER (partition BY id) count_email
, SUM(CASE
WHEN SolicitMethod = 'phone' THEN 1
ELSE 0
END)
OVER (partition BY id) count_phone
FROM d.email