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

SQL - how to get matching survey results?

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

如果每个问题都有 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,但 return 条目当且仅当它至少匹配 60 % 的标准。

returned 行应该是 User1 和 User3。用户 1 的答案匹配度为 80%,用户 3 的答案匹配度为 60%

如果您的意思是 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