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
的匹配项是 1
,A2
的匹配项是 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
如何按匹配条件抓取条目?
如果每个问题都有 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
的匹配项是 1
,A2
的匹配项是 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