SQL - 如何获得匹配的调查结果?

时间:2016-05-30 13:02:22

标签: sql h2

如何按匹配条件获取条目?

如果每个问题都有5个可能的答案,我如何获取条目并按照最佳匹配首先按某种百分比(比如60%)或仅按百分比失败的条目(40%)对它们进行排序)?

SELECT * FROM SurveyAnswers WHERE(A1 = 1 OR A2 = 2 OR A3 = 3 OR A4 = 4 ... )不执行百分比检查。

使用的数据库是H2。

UserName(PK)    A1  A2  A3  A4  A5
User1           1   2   1   4   5
User2           2   5   2   3   5
User3           3   2   1   4   5

所以,我想搜索标准A1 = 1,A2 = 2,A3 = 3,A4 = 4,A5 = 5,但当且仅当它符合至少60%的标准时才返回该条目。< / p>

返回的行应为User1和User3。用户1的答案匹配80%,User3的答案匹配60%

1 个答案:

答案 0 :(得分:2)

如果您认为A1的匹配为1A2的匹配为2,依此类推..请使用CASE EXPRESSION

SELECT t.userName
FROM YourTable t
WHERE (CASE WHEN t.A1 = 1 THEN 1 ELSE 0 END +
       CASE WHEN t.A2 = 2 THEN 1 ELSE 0 END +
       CASE WHEN t.A3 = 3 THEN 1 ELSE 0 END +
       CASE WHEN t.A4 = 4 THEN 1 ELSE 0 END +
       CASE WHEN t.A5 = 5 THEN 1 ELSE 0 END) >= 3
相关问题