Как мне написать этот SQL-запрос? Топ 3 самых подходящих результатов - PullRequest
0 голосов
/ 22 декабря 2011

Я ищу SQL-запрос, который дает мне три наиболее подходящих результата.

Идентификатор Find содержит атрибут A, B, C

id   | attribs  | results (# of matches)
----+-----+-----+----
1    | A,B,C    | 3
2    | A        | 1
3    | A,B      | 2
4    | A,D      | 2 
5    | E        | 0

В этом примере я хотел бы вернуть id 1,3,4

Можно ли это сделать только с помощью SQL-запроса?

Я использую SQL Server 2008.

Спасибо

1 Ответ

1 голос
/ 22 декабря 2011

Предполагая, что каждый атрибут находится в отдельной строке:

select top 3 id
from MyTable 
where attrib in ('A', 'B', 'C')
group by id
order by count(distinct attrib) desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...