Описание проблемы : Я пытаюсь определить агрегатор pl / python, который получает набор строк и возвращает набор строк для каждого набора строк, сгенерированных из запроса. Входной набор строк должен быть группой, созданной с помощью оператора group by в запросе. Я пытаюсь найти свой путь через синтаксис, но мне тяжело с этим. Функции pl / pgsql приветствуются, но, боюсь, им может не хватить выразительной силы для этого.
Описание контекста : у меня есть таблица с тремя столбцами: символ тикера, дата и значение. Я пытаюсь вычислить macd для каждого символа тикера и даты в соответствии со значениями, которые у меня есть. Я могу сгруппировать и отсортировать таблицу по дате, тогда все, что мне нужно будет сделать, - это для каждой группы вычислить значение агрегатора для этой даты в соответствии с текущим значением для каждого тикера и предыдущим значением для агрегатора, что, как я полагаю, сохранит в SD, тогда все, что мне нужно будет вернуть, - это набор строк с этим значением и, возможно, тикер для объединения, но я думаю, что должна быть возможность сохранить порядок и сэкономить время объединения.
Вот как будет создана таблица:
create table candles(ticker text, day date, value real,
primary key (ticker, day));
Здесь вы можете найти пример в Java (pseudocode-ish), который показывает, как следует обрабатывать группы (по дням) после сортировки по тикеру. В Java эти группы представлены в виде ArrayList, поскольку они отсортированы по тикеру, одна и та же позиция соответствует одному и тому же тикеру (база данных проверяется при генерации, поэтому записи отсутствуют), и поскольку они группируются по дням, каждая группа имеет значения для в тот же день и на следующий день, чем предыдущий звонок.
PD: Я также добавил код для вычисления MACD в pl / pgsql , но для этого я делаю заказ по тикеру и по дню, я хотел бы заказать по дням и сделать все вычисления для всех тикеры в цикле, потому что это должно быть более эффективным, особенно учитывая, что конечный результат должен быть упорядочен по дням, чтобы его можно было использовать таким образом.
Если есть что-то, что не совсем понятно, пожалуйста, спросите меня, я стараюсь быть ясным и лаконичным.
Большое спасибо.