这是一个包含三列的表: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
如何编写查询来获取它?
最佳答案
T-SQL/SQL 服务器
DECLARE @DataSource TABLE
(
[user_id] VARCHAR(2)
,[product_id] VARCHAR(2)
,[rating] DECIMAL(9,2)
);
INSERT INTO @DataSource ([user_id], [product_id], [rating])
VALUES ('u0', 'p0', 3)
,('u0', 'p1', 2)
,('u1', 'p0', 1)
,('u1', 'p1', 4);
WITH DataSource AS
(
SELECT [product_id]
,EXP(SUM(LOG([rating]))) AS [value]
FROM @DataSource
GROUP BY [product_id]
)
SELECT SUM([value])
FROM DataSource;
关于mysql - 编写sql查询来计算产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47235304/