我试图形成一个query
,它应该确定给我一个在几个月内进行产品转换的客户列表。
我的数据集如下:
Transaction_ID Customer Product Date
-------------- -------- -------- ------
1001 Cust1 Prod1 01-Jan-13
2234 Cust1 Prod2 15-Mar-13
2523 Cust1 Prod1 18-Mar-13
.................................................
8238 Cust1 Prod2 09-Jun-13
9127 Cust1 Prod2 18-Jun-13
它应该给我'Cust1'
作为Cust1
用于购买更多prod1然后切换到Prod2的{{1}}。我不确定是否应该使用自我加入。请帮忙。 (我使用的是Oracle 11G)
答案 0 :(得分:0)
Select count(Product) from (select Customer, Product from Table group by Customer, Product) group by Customer
计数> 1 ==>他们做了一个转换。
答案 1 :(得分:0)
嗯,现在您减少了任务,例如简单地发现2013年1月至6月Prod1购买的客户占75%以上,2013年7月至12月购买Prod2的客户占75%以上,我们可以建立两个集并相交。
select customer
from transaction
where extract(year from tdate) = 2013 and extract(month from tdate) <= 6
group by customer
having sum(case when product = 'Prod1' then 1 end) / count(*) > 0.75
intersect
select customer
from transaction
where extract(year from tdate) = 2013 and extract(month from tdate) > 6
group by customer
having sum(case when product = 'Prod2' then 1 end) / count(*) > 0.75