【问题标题】:Union and Intersection of SQL query with Jaccard similarity included包含 Jaccard 相似性的 SQL 查询的并集和交集
【发布时间】: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


    【解决方案1】:

    我建议您不要在网上寻求帮助,而是去办公时间。请看下面的链接: http://www.cs.cornell.edu/Courses/cs4320/2016sp/

    【讨论】:

    • 欢迎来到 Stack Overflow!虽然这在理论上可以回答这个问题,it would be preferable 在这里包括答案的基本部分,并提供参考链接。
    • 这完全没有意义。请不要解决关于人们应该或不应该在这里做作业的争吵。
    猜你喜欢
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 2016-08-16
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多