我们说我的应用有1000个用户。我问他们100个问题,答案是肯定/否,我将这些答案记录在一个单独的表格中。
现在,我希望看到那些对至少20个问题给出相同答案的人。
为了做到这一点,我应该遵循什么样的算法?谷歌搜索有哪些相关的关键词?
P.S。我在WAMP环境中工作。
答案 0 :(得分:4)
将您的答案表加入到自己,选择共享相同question_id
和answer
但具有不同user_id
的答案。按行user_id
对行进行分组,并使用HAVING
子句排除少于20个匹配答案的行。
您正在寻找与user_id
“1”的用户类似的用户的示例:
SELECT DISTINCT a2.user_id FROM answers a
INNER JOIN answers a2
ON a.question_id = a2.question_id
AND a.answer = a2.answer
AND a.user_id != a2.user_id
WHERE a.user_id = 1
GROUP BY a.user_id, a2.user_id
HAVING COUNT(*) >= 20;
从技术上讲,在这种情况下你不需要按a.user_id
进行分组,但是如果你想修改WHERE
子句以返回多个{{1}的结果,我就把它留在那里}}