У меня есть таблица, подобная следующей:
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
Есть предложения?