同一个表中的百分比匹配

时间:2017-07-19 19:34:57

标签: php mysql left-join inner-join right-join

下面我有一个MySQL数据库,其中"id"只是每行的id。 “问题”显示问题的ID。有四个问题11, 12, 13 and 14。对于每个问题,用户都有四个答案选项(1,2,3 and 4),存储在"answer"列中。 "user"列表示回答了哪个用户。在这个例子中,我们有用户10,11和12

id      question    answer      user
1           11          2       10  
2           12          2       10
3           13          3       10
4           14          4       10
5           11          2       11
6           12          2       11
7           13          4       11
8           14          1       11
9           11          2       12          
10          12          2       12  
11          13          1       12
12          14          1       12

假设用户10是参考用户,这意味着我想知道用户10与其他用户10的匹配程度。使用SQL 和/或 php代码,我如何匹配用户的答案,以便我获得匹配百分比,首先显示最高百分比。所以在这个例子中,我正在寻找类似的东西。

        user     percent    
1       11       50%
2       12       75%

我不确定这是否只有SQL才能实现。例如,可能需要一些PHP来将计数转换为

1 个答案:

答案 0 :(得分:0)

最后我得到了你想要的输出
试试这个:

SELECT * ,round(count(*)/(SELECT count(*) FROM `list` where user=10)*100) as
 pecentage FROM `list` as l where l.answer=(SELECT m.answer FROM `list` as m
 where m.user=10 and l.question=m.question) group by (l.user) order by pecentage

它将产生输出

enter image description here

如果您不想要l.user!=10值,可以在where条件中添加user 10