У меня есть таблица, похожая на следующую:
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
В таблице каждая дата может иметь несколько значений "expiry". Мне нужен запрос, который возвращает 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
Любые предложения?