我正在寻找一种方法来计算单个表中整数之间的差异。
我正在计划一个如下所示的 MYSQL 表:
user question answer
1 1 3
1 2 3
1 3 2
1 4 5
1 5 1
2 1 2
2 2 3
2 3 1
2 4 5
2 5 3
3 1 3
3 2 3
3 3 4
3 4 5
3 5 3
4 1 5
4 2 3
4 3 2
4 4 5
4 5 1
每个用户(在这个例子中)已经回答了 5 个问题,给出的答案从 1 到 5 分。
我要弄清楚的是用户 2、3 和 4 中哪一个给出的答案与用户 1 提供的答案最相似。
我的想法是计算每个用户对每个问题给出的答案与用户 1 的答案之间的差异,然后将这些差异相加。
添加后编号最小的用户与用户 1 最相似。
很抱歉,我真的不知道从哪里开始构建一个有效执行此操作的查询,并且想知道是否有人可以为我指出正确的方向? 我也乐于接受任何关于以更好或更合乎逻辑的方式来构建相同结果的建议。
最佳答案
SELECT SUM(ABS(t2.answer - t1.answer)) AS total_diff, t2.user
FROM my_table AS t1
LEFT JOIN my_table AS t2 USING(question)
WHERE t1.user = 1 AND t2.user != t1.user
GROUP BY t2.user
ORDER BY total_diff ASC
结果:
total_diff user
2 4
4 2
4 3
关于MYSQL - 计算单个表内的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11209247/