Sam Saffron
Sam Saffron

Reputation: 131112

Find N element in sequence using SQL

Given the following table:

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

I would like a query that returns the 4th in each sequence of tags (ordered by Tag, Sequence asc):

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

What is the most efficient SQL I can use here? (Note: SQL Server 2008 tricks are allowed)

Upvotes: 6

Views: 238

Answers (1)

Bill Karwin
Bill Karwin

Reputation: 562260

WITH Enumerated AS (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY Tag ORDER BY Sequence) AS RN 
  FROM MyTable
)
SELECT * FROM Enumerated WHERE RN = 4;

Upvotes: 8

Related Questions