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 24/02/2022 18:19:20

carosim
Membre

Division sur chaque valeur d'un tableau de réel

Bonjour à tous,

J'ai une colonne de type real[] qui ressemble à cela en terme de contenu
{NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,8.862238e-06,1.117886e-06,-2.000768e-05,-8.042958e-06,-6.152146e-06,-2.028796e-05,-1.554476e-05,-1.513512e-05,-3.419416e-06,8.676822e-05,0.001941478,0.005453602,0.01815352,0.02022328,0.02122582,0.02196964,0.02267034,0.0233387}

Et je souhaite diviser chaque valeur de cette colonne par 1000 en PL/pgsql... j'ai tenté un truc simple avec un update table set macolonne=macolonne/1000 mais ce n'est pas concluant. J'ai une solution en passant par un code python ou talend en intermédiaire mais dans l'idéal je cherche quelque chose de rapide sans intermédiaire.
Ca existe ou je cherche inutilement?
Merci pour votre aide.
Caroline

Hors ligne

#2 24/02/2022 18:27:34

rjuju
Administrateur

Re : Division sur chaque valeur d'un tableau de réel

Bonjour,

Vous devriez vous en sortir avec unnest.  Par exemple:

with s(v) as (
select '{NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,8.862238e-06,1.117886e-06,-2.000768e-05,-8.042958e-06,-6.152146e-06,-2.028796e-05,-1.554476e-05,-1.513512e-05,-3.419416e-06,8.676822e-05,0.001941478,0.005453602,0.01815352,0.02022328,0.02122582,0.02196964,0.02267034,0.0233387}'::real[]
)
select array_agg(v2) from (select unnest(v)/1000 as v2 from s) s2;
-[ RECORD 1 ]------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
array_agg | {NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,8.86223824636545e-09,1.1178859722349444e-09,-2.0007679268019273e-08,-8.042958143050782e-09,-6.1521459429059176e-09,-2.0287960069254042e-08,-1.554475966258906e-08,-1.5135119610931726e-08,-3.4194160889455816e-09,8.676821744302288e-08,1.941477996297181e-06,5.453601945191622e-06,1.8153520300984382e-05,2.0223280414938925e-05,2.12258193641901e-05,2.1969640627503397e-05,2.2670339792966843e-05,2.3338699713349343e-05}

Hors ligne

#3 24/02/2022 23:33:23

carosim
Membre

Re : Division sur chaque valeur d'un tableau de réel

Merci beaucoup Julien. C'est parfait, j'ai mis cela dans une procédure et j'ai pu traiter tous mes enregistrements.

Bonne soirée

Hors ligne

Pied de page des forums