每个客户,一个项目,多个订单

时间:2018-02-07 17:14:17

标签: sql-server

我的问题实际上与医疗相关,但我会提供一些模拟客户,销售驱动的问题,以使这个问题对本网站上的大多数用户更实用。

假设我有一个包含以下所有列的表:

CustomerID
CustomerName
OrderID
OrderDate
Region
ItemID
ItemName
SalespersonID
SalespersonName

由于所有内容都在同一个表格中,我不相信任何联接都是必要的。

问题

  1. 我们说我经营一家商店,在需要客户预约的佣金中支付销售人员的费用。佣金基于客户返回该销售人员的次数 如何找出哪些客户只与同一销售人员预约过,而且从未见过不同的销售人员?

  2. 或者,我可以提供另一种方法来解决这个问题 有没有办法找出是否有客户只是为了单独的订单多次购买了一件商品?

  3. 例如,如果客户A,Jennifer Smith真的喜欢一种特色产品,Extra Blue Caviar和Jennifer每三个月购买一次Extra Blue Caviar,并且从未在商店购买过其他商品。此外,让我们说顾客B,约翰史密斯,每周购买额外香茉莉香米,并且从未在商店购买过其他商品。

    我如何获得Jennifer Smith和John Smith以及Extra Blue Caviar和Extra Fragrant Jasmine Rice的清单,这些清单基于他们曾多次从商店购买过一件商品的标准?

    非常感谢你!

1 个答案:

答案 0 :(得分:0)

选项#2

create table #t ( c_ID int,  c_Name varchar(20),  
o_ID int,  o_date datetime,  r int,  
i_ID int,  i_name varchar(20),  
s_ID int,  s_Name varchar(20))

;with cte as ( select
c_ID,
c_Name,
i_ID,
i_name,
count(distinct i_id) over (partition by c_ID) num_diffent_items,
count(*) over (partition by c_ID, i_ID) number_of_purchases
from #t)

select distinct
c_ID,
c_Name,
i_ID,
i_name,
number_of_purchases
from cte where num_diffent_items = 1