2016-05-30 83 views
1

如何通过匹配条件获取条目?SQL - 如何获得匹配的调查结果?

如果每个问题有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%的标准。

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

+1

请编辑您的问题,提供样本数据和期望的结果。 –

+0

定义'匹配',我们如何知道答案是否正确? – sagi

+0

@ Sagi,'match'只是表示搜索条件。没有“正确的”答案。这是一项调查。 – user3635998

回答

2

如果你的意思是,匹配A11A22等..使用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 
相关问题