Redshift-查找将特定值存储在表的列中的次数

时间:2018-08-14 17:46:04

标签: sql casting amazon-redshift

以下是我的表格视图,其中存储了销售数据以及客户是否为新客户的详细信息。我正在尝试查找相同的sale_id是否具有针对同一客户的多个条目,并将其标记为新客户。下面给出的是表格的示例视图

cust_id,prod_id,sale_id,is_new_cust,store_type
1,prod_a,1001,t,store
2,prod_a,1002,,online
3,prod_a,1003,t,store
3,prod_a,1003,t,store

我需要找到有多少个具有is_new_cust标记的同一个sale_id客户。

以下是我尝试过的SQL:

select cust_id,count(is_new_cust) from sales 
where store_type = 'store' and is_new_cust='t'
group by cust_id having count(is_new_cust)> 1;

预期输出:

cust_id,count
3,2

上面的SQL返回1没有结果。

我正在使用Amazon Redshift DB。

任何人都可以帮助我找到查询哪里出问题了。谢谢。

1 个答案:

答案 0 :(得分:0)

我想你想要

select count(distinct cust_id) as num_customers,
       count(distinct case when is_new_cust = 't' then cust_id end) as num_new_customers
from sales 
where store_type = 'store';

但是,这可能是一个更简单的版本,可以满足您的要求:

select count(*)
from sales
where store_type = 'store' and is_new_cust = 't';

这假定新客户只设置一次is_new_cust标志。