Я использую PostgreSQL 8.2 , что является основной причиной, по которой я задаю этот вопрос.Я хочу получить в этой версии PostgreSQL столбец (пусть назовем его C) с кумулятивным минимумом для некоторого другого предварительно упорядоченного столбца (пусть назовем его B).Таким образом, в n-й строке столбца C должно быть минимум значений B в строках с 1 по n для некоторого порядка.
В приведенном ниже примере столбец A дает порядок, а столбец C содержит совокупный минимум для столбца B в этом порядке:
A B C
------------
1 5 5
2 4 4
3 6 4
4 5 4
5 3 3
6 1 1
Вероятно, самый простой способ объяснить, что я хочу, это то, что в более поздних версиях следующий запрос делает:
SELECT A , B, min (B) OVER(ORDER BY A) C FROM T;
Но версия 8.2, конечно, не имеет окнаfunctions.
Я написал несколько функций plpgsql, которые делают это на массивах.Но чтобы использовать это, я должен использовать array_agg агрегатную функцию, которую я снова написал сам (в этой версии нет встроенного array_agg).Этот подход не очень эффективен, и хотя он хорошо работал на меньших столах, он стал почти непригодным для использования теперь, когда мне нужно использовать его на больших столах.
Так что я был бы очень благодарен за любые предложения альтернативных, более эффективныхрешения этой проблемы.
Спасибо!