如何找到最常见的模式

时间:2011-12-13 20:19:24

标签: sql

我在MS SQL服务器表中有百万条记录:

user1,product1,0
user1,product2,time1
user1,product3,time2
user1,product4,time3
user2,product3,0
user2,product2,time4
user3,product4,0
user3,product5,time5

表示用户在不同时间购买产品。第3列是购买时间,当值为0时,表示这是第一次购买此用户,假设一次使用只会在第一时间购买一件商品。

time1,time2,time3等只是第一次购买和当前购买时间之间的时差。

现在我需要将其概括为:

十大常见购买对(产品,以下购买产品)以及有多少不同的用户符合此模式。

结果对可能看起来像。

 (product1,product2)
and (product1,product5)
and (product2,product5)
....

如何在SQL中实现这一点?非常感谢

1 个答案:

答案 0 :(得分:1)

试试这个:

declare @temp table (product1 varchar, product2 varchar, user_count int)

insert into @temp (product1, product2, user_count
select pr1.product, pr2.product, count(distinct userid)
from
purchases pr1
inner join purchases pr2 on pr1.UserId = pr2.UserId and pr1.Time < pr2.Time
group by
pr1.product,
pr2.product


select top 10 * from @temp order by user_count desc