AFAIK нет легкого обходного пути для этого.
Вы всегда можете передать все данные координатору и рассчитать процентили там. Не рекомендуется делать это в том же запросе.
SELECT percentile_cont(array[0.25,0.5,0.75,0.9]) within group (order by r.order_col)
FROM
(
SELECT order_col, ...
FROM rents
WHERE ...
) r
GROUP BY ...
Этот запрос перетянет все данные, возвращенные внутренним подзапросом, в координатор и вычислит процентили в координаторе.
Да, glib
довольно хороший выбор: это включает много утилит для управления контейнерами как связанные списки, массивы, хеш-таблицы, и т.д. И существует также объектно-ориентированная платформа, названная GObject
, что можно использовать для создания объектов с сигналами и слотами в C (хотя с довольно подробными именами вызова функции как gobject_set_property
, так как C не имеет никакого синтаксиса для объектов). И существует также код для основных циклов, таким образом, можно записать событийно-ориентированные программы.
Бойкий был первоначально частью GTK, но код не-GUI был полностью факторизован так, чтобы можно было использовать его в программах командной строки: http://library.gnome.org/devel/glib/stable/
Хорошо начиная с STL очень природа основана на шаблонах, которые не имеет C, было бы трудно даже близко подойти к STL в C. Лучшими, на которые Вы могли надеяться, являются некоторые классы набора, которые управляют пусто* указатели на неизвестный объект.