数据库:
Transaction ProductID
1 1000
2 1000
2 1001
3 1000
3 1002
4 1000
4 1001
5 1003
在上表中,如何用T-SQL语句找到这个结果?
+-------------+-----------+-----------------+
| PRODUCTID1 | PRODUCTID2| SUPPORT |
+-------------+-----------+-----------------+
| 1000 | 1001 | 2 |
+-------------+-----------+-----------------+
| 1000 | 1002 | 1 |
+-------------+-----------+-----------------+
| 1000 | 1003 | 0 |
+-------------+-----------+-----------------+
| 1001 | 1002 | 0 |
+-------------+-----------+-----------------+
| 1001 | 1003 | 0 |
+-------------+-----------+-----------------+
| 1002 | 1003 | 0 |,
+-------------+-----------+-----------------+
测试表:
create table transactions(
ORDERID INT,
PRODUCTID INT
);
insert into transactions(ORDERID, PRODUCTID)
values ('1', '1000')
,('2', '1000')
,('2', '1001')
,('3', '1000')
,('3', '1002')
,('4', '1000')
,('4', '1001'),
('5', '1003');
提前致谢。
最佳答案
你能推断出零吗?即我们可以说任何未列出的都是零吗?如果是这样:
select t1.PRODUCTID as [PRODUCTID1], t2.PRODUCTID as [PRODUCTID2],
COUNT(1) as [SUPPORT]
from transactions t1 inner join transactions t2
on t1.ORDERID = t2.ORDERID
and t1.PRODUCTID < t2.PRODUCTID
group by t1.PRODUCTID, t2.PRODUCTID
输出:
PRODUCTID1 PRODUCTID2 SUPPORT
----------- ----------- -----------
1000 1001 2
1000 1002 1
关于c# - 如何在 T-SQL 语句中找到 Apriori 关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5883334/