【发布时间】:2018-04-24 10:07:38
【问题描述】:
这是一个包含三列的表:user_id、product_id、rating,
这是桌子:
user_id product_id rating
u0 p0 3
u0 p1 2
u1 p0 1
u1 p1 4
u2 p0 2
u2 p1 3
如果两个不同的客户都对相同的两种产品进行评分,则计算其评分的点积如下: u0 和 u1 都评价了产品 p0 和 p1,结果应该是:3 * 1 + 2 * 4 = 11
和结果表:
u0 u1 3*1+2*4=11
u0 u2 3*2+2*3=12
u1 u2 1*2+4*3=14
如何编写查询来获取它?
【问题讨论】:
-
选择不同的 MySQL 和 SQL-Server 之一。
-
@roastedpotato:是否有任何附加条件,例如将其限制为某些用户/产品?另外,你真的需要第一列和第二列有 user_ids 吗?
-
你不清楚。你没有解释。什么是输入的函数? (为什么是示例输入的输出?如果有其他用户和产品怎么办?什么“两个产品”?)另外,你试过什么?请阅读minimal reproducible example并采取行动。
-
这只是最不清晰的一点。解释如何将输入映射到向量。例如,您的意思不是“将值存储为 [a] 稀疏向量”,而是指“该表通过 ... 稀疏表示两个向量 ....”。例如(数学一维)向量通常是有序列表,并且根据您的公式和提到的点积,它们是用户和产品向量,但表格没有排序,那么这些因素是如何配对的?使用英语写出足够完整的句子,并使用适当的标点符号和语法,使用足够多的词来指代事物来解释您的意思。
标签: mysql sql sql-server sql-server-2008 tsql