这是一个包含三列的表格:user_id,product_id,评价,

这是表:

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/

10-10 06:48