PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 14/01/2009 18:06:22

YannT
Membre

problème de conversion de type

Bonjour,

quelqu'un peut-il m'expliquer pourquoi un :

select  cast (67/147 as numeric(5,5) )

me renvoie :

0.00000

au lieu du 0,45578 attendu ?

Postgres 8.3
Ubuntu 8.04

Hors ligne

#2 14/01/2009 21:00:30

xavier-Pierre
Membre

Re : problème de conversion de type

la division entre 2 entiers  sous postgres est tronqué donc 67/147 donne 0
par contre select  cast (67./147. as numeric(5,5) ) renvoie bien le resultat attendu

Hors ligne

#3 15/01/2009 20:41:10

YannT
Membre

Re : problème de conversion de type

Merci,

En fait mes valeurs entières étaient le résultat de select count, et ce sont ces Select count que j'ai du caster :


select   count(ouv1.idcat), round((cast(count(ouv1.idcat) as numeric(5,2))/
cast((select count(ouv2.idouv) from ouvrage ouv2) as numeric(5,2) )*100 ))||' %' as pourcent
from ouvrage ouv1
group by ouv1.idcat
order by count(ouv1.idcat) desc

count | pourcent
-------+----------
    67 | 45 %
    44 | 30 %
    38 | 26 %



sans doute un peu lourdingue, mais je n'ai pas mieux

Hors ligne

#4 15/01/2009 22:13:11

xavier-Pierre
Membre

Re : problème de conversion de type

bonsoir une ecriture un peu plus concise et pratique
count(ouv1.idcat)::numeric(5,2)   <==> cast(count(ouv1.idcat) as numeric(5,2))

Hors ligne

Pied de page des forums