包含 Jaccard 相似度的 SQL 查询的并集和交集

Union and Intersection of SQL query with Jaccard similarity included

CREATE TABLE Customer (cid INTEGER PRIMARY KEY, cname VARCHAR(20) NOT NULL);
CREATE TABLE Product  (pid INTEGER PRIMARY KEY, pname VARCHAR(20) NOT NULL,
    msrp INTEGER NOT NULL);
CREATE TABLE Purchase (cid INTEGER, pid INTEGER, date DATE, 
    price INTEGER NOT NULL,
    PRIMARY KEY (cid, pid, date),
    FOREIGN KEY (cid) REFERENCES Customer(cid),
    FOREIGN KEY (pid) REFERENCES Product(pid));

只考虑至少进行过一次购买的客户。对于每一对这样的 客户计算他们购买的产品的 Jaccard 相似度。那是, 如果客户A购买了a套产品,客户B购买了b套产品, 它们的 Jaccard 相似度是两个集合的交集的大小除以大小 他们的工会。对于每一对客户,输出两个 cid 和 Jaccard 相似度。每对 应该只输出一次,即如果 (1; 3; j) 是一对具有 Jaccard 相似度 j 的匹配 cids,你 应该 return 仅 (1; 3; j) 而不是 (3; 1; j)。按 Jaccard 相似度降序排列输出, 即最相似的一对应该首先列出。请注意,此问题询问的是产品而不是 产品购买:如果客户多次购买产品,则仅计为一次 用于此计算的产品。

我建议您不要在线寻求帮助,而是去上班时间。请参阅下面的 link: http://www.cs.cornell.edu/Courses/cs4320/2016sp/