SQL查询给出了奇怪的结果

时间:2014-02-27 09:07:30

标签: sql sql-server database

我正在尝试执行一个SQL查询,这会给我带来奇怪的结果。以下是表格:

U1Base包含有关用户提供的movie ratings的信息 - 其中包含用户向电影提供的user ID, movie ID and Rating(还包含与问题无关的其他信息)

U1Test与U1Base具有相同的列,用于测试U1Base上的计算结果

这两个表是从MovieLens导入的,所以它们无可非议(我确实需要清理一些数据,但它只有80000行中的一行)

S1_Similarity包括数据库中每两个用户之间的相似性度量

我想计算一个用户给他/她没有看过的电影评级的预测。为此,我想从u1base中推断并将结果与​​u1test进行比较。

u1test有20000行。

以下是我用于选择的查询:

SELECT test.user_id, 
       test.movie_id,
       sum(cast(base.rating as float))/5 
  FROM u1test AS test, 
       u1base AS base
 WHERE     base.user_id<>test.user_id
       AND base.movie_id=test.movie_id
       AND base.user_id IN (
                       SELECT TOP 5 user_id2 
                         FROM s1_similarity 
                        WHERE user_id1=test.user_id 
                     ORDER BY similarity desc
            )
GROUP BY 
       test.user_id,test.movie_id

由于某种原因,此查询不会像我预期的那样返回20,000行。如果我增加顶部参数,则包含更多行。我认为u1test中的每一行都会得到一个计算的平均值。

我做错了什么?

多坦

0 个答案:

没有答案