Попробуйте также старый синтаксис для кастинга,
SELECT ROUND(AVG(some_column)::numeric,2)
FROM table;
работает с любой версией PostgreSQL.
В некоторых функциях PostgreSQL наблюдается нехватка перегрузок (почему? ?): Я думаю, что «это недостаток» (!), Но @CraigRinger, @Catcall и команда PostgreSQL согласны с «историческим обоснованием pg».
PS: еще одна точка вокруг округления - это точность, проверьте @ ответ ЯнКенни .
Вы может перегрузить функцию ROUND с помощью
CREATE FUNCTION ROUND(float,int) RETURNS NUMERIC AS $$
SELECT ROUND($1::numeric,$2);
$$ language SQL IMMUTABLE;
Теперь ваша инструкция будет работать нормально, попробуйте (после создания функции)
SELECT round(1/3.,4); -- 0.3333 numeric
, но она вернется NUMERIC ... Чтобы сохранить первую перегрузку коммо-использования, мы можем вернуть FLOAT-тип, когда предлагается параметр TEXT,
CREATE FUNCTION ROUND(float, text, int DEFAULT 0)
RETURNS FLOAT AS $$
SELECT CASE WHEN $2='dec'
THEN ROUND($1::numeric,$3)::float
-- ... WHEN $2='hex' THEN ... WHEN $2='bin' THEN... complete!
ELSE 'NaN'::float -- like an error message
END;
$$ language SQL IMMUTABLE;
Попробовать
SELECT round(1/3.,'dec',4); -- 0.3333 float!
SELECT round(2.8+1/3.,'dec',1); -- 3.1 float!
SELECT round(2.8+1/3.,'dec'::text); -- need to cast string? pg bug
PS: проверка \df round
после перегрузок, покажет что-то вроде:
Schema | Name | Result data type | Argument data types ------------+-------+------------------+---------------------------- myschema | round | double precision | double precision, text, int myschema | round | numeric | double precision, int pg_catalog | round | double precision | double precision pg_catalog | round | numeric | numeric pg_catalog | round | numeric | numeric, int
Функции pg_catalog
являются стандартными, см. руководство по встроенным математическим функциям ].
Have you looked at Snakefood yet? It looks like it's exactly what you're looking for.
Вы пробовали pydev ? Это расширение Python для затмения. Я считаю, что это позволяет вам использовать функцию «иерархии вызовов» в Eclipse для просмотра графика вызовов для данного метода. Это не совсем то, что вы хотите, но, возможно, этого достаточно, чтобы начать.
Просто запущенное использование pydeps и до сих пор это работает хорошо.
Я тоже запутался в этом вопросе, я нашел помощника по поиску, который помог мне найти иерархию вызовов другим способом. не очень хорошо, но лучше, чем нет. извините за мой английский.
ps.IDE eclipse + pydev