У меня есть функция, которая принимает в качестве входных данных некоторые значения в таблице и возвращает кортеж, если хотите, - три отдельных возвращаемых значения, которые я хочу перенести в вывод запроса. Вот упрощенный пример того, чего я хочу достичь:
multiplier:{(x*2;x*3;x*3)};
select twoX:multiplier[price][0]; threeX:multiplier[price][1]; fourX:multiplier[price][2] from data;
Вышеописанное в основном работает (я думаю, что у меня есть правильный синтаксис для упрощенного примера - если нет, то, надеюсь, мое намерение ясно), нонеэффективно, потому что я вызываю функцию три раза и выбрасываю большую часть выходных данных каждый раз. Я хочу переписать запрос, чтобы вызвать функцию только один раз, и я изо всех сил.
Обновление
Мне кажется, я упустил важную информацию в своем объяснении проблемы, которая влияет нарезультат - мне нужно получить другие данные в запросе наряду с выводом моей функции. Вот, надеюсь, более реалистичный пример:
multiplier:{(x*2;x*3;x*4)};
select average:avg price, total:sum price, twoX:multiplier[sum price][0]; threeX:multiplier[sum price][1]; fourX:multiplier[sum price][2] by category from data;
Я попробую адаптировать ваши ответы, чтобы они соответствовали этому требованию, и приношу извинения за то, что упустил эту информацию. Реальная функция, если собственный и довольно сложный алгоритм и реальный запрос имеет около 30 выходных столбцов, поэтому попытка упростить пример:)