269 votes

Comment arrondir une moyenne à 2 décimales dans PostgreSQL ?

J'utilise PostgreSQL via la gemme Ruby 'sequel'.

J'essaie d'arrondir à deux décimales.

Voici mon code :

SELECT ROUND(AVG(some_column),2)    
FROM table

J'obtiens l'erreur suivante :

PG::Error: ERROR:  function round(double precision, integer) does 
not exist (Sequel::DatabaseError)

Je n'obtiens aucune erreur lorsque j'exécute le code suivant :

SELECT ROUND(AVG(some_column))
FROM table

Quelqu'un sait-il ce que je fais de travers ?

10voto

vlatko606 Points 86
SELECT ROUND(SUM(amount)::numeric, 2) AS total_amount
FROM transactions

Dons : 200234.08

4voto

kometen Points 37

Selon le Bryan's vous pouvez le faire pour limiter les décimales dans une requête. Je convertis les km/h en m/s et je les affiche dans les dygraphes, mais lorsque je le fais dans les dygraphes, cela semble bizarre. L'affichage est correct lorsque le calcul est effectué dans la requête. C'est sur postgresql 9.5.1.

select date,(wind_speed/3.6)::numeric(7,1) from readings;

1voto

user5702982 Points 19

Erreur : la fonction round(double precision, integer) n'existe pas

Solution : Vous devez ajouter le type cast pour que cela fonctionne.

Ex : round(extract(second from job_end_time_t)::integer,0)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X