Найти N элементов в последовательности, используя SQL - PullRequest
6 голосов
/ 08 сентября 2010

Учитывая следующую таблицу:

Sequence    Tag
-----       ----
1           a
2           a
3           a
88          a
100         a
1           b
7           b
88          b
101         b

Я хотел бы запрос, который возвращает 4-й в каждой последовательности тегов (упорядоченный по тегу, последовательность ASC):

Tag         4thInSequence
-----       --------
a           88
b           101

Чтосамый эффективный SQL, который я могу использовать здесь?(Примечание: трюки SQL Server 2008 разрешены)

1 Ответ

8 голосов
/ 08 сентября 2010
WITH Enumerated AS (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY Tag ORDER BY Sequence) AS RN 
  FROM MyTable
)
SELECT * FROM Enumerated WHERE RN = 4;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...