MySql второй наименьший элемент в каждой группе

У меня есть таблица, подобная следующей:

    date    |   expiry
-------------------------    
2010-01-01  | 2010-02-01
2010-01-01  | 2010-03-02
2010-01-01  | 2010-04-04
2010-02-01  | 2010-03-01
2010-02-01  | 2010-04-02

В таблице каждая дата может иметь несколько значений срока действия. Мне нужен запрос, который возвращает n-й наименьший срок действия в каждой дате. Например, для n = 2 я ожидал:

     date    |   expiry
-------------------------       
2010-01-01  | 2010-03-02
2010-02-01  | 2010-04-02

Моя проблема в том, что AFAIK, не существует агрегатной функции, которая возвращает n-й по величине / наименьший элемент, поэтому я не могу использовать GROUP BY. Более конкретно, если бы у меня был волшебный агрегат MIN (), который принимает второй параметр «смещение», я бы написал:

SELECT MIN(expiry, 1) FROM table WHERE date IN ('2010-01-01', '2010-02-01') GROUP BY date

Есть предложения?

10
задан bavaza 27 January 2011 в 07:17
поделиться