【发布时间】:2016-02-16 01:54:32
【问题描述】:
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 的 cid,你 应该只返回 (1; 3; j) 而不是 (3; 1; j)。按 Jaccard 相似度降序对输出进行排序, 即最相似的对应该首先列出。请注意,此问题询问的是产品而不是 产品购买:如果客户多次购买产品,则仅计为一次 用于此计算目的的产品。
【问题讨论】:
标签: mysql sql relational-database union intersection