Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Tue 24 November 2020 17:00

preliator
Participant assidu
Date d'inscription: 17 Nov 2018
Messages: 433

pivot_table dynamique sur Postgre ?

Bonjour,

Je dispose d'une table, qui caractérise des individus décrits par un identifiant, et des variables qui se répètent pour chacun d'entre eux. Voici un exemple reproductible similaire

Code:

create temp table if not exists ma_table (
    code_iris text,
    cat text,
    valeur numeric
);
insert into ma_table values
    ('id_1', 'cat_1', 12),
    ('id_1', 'cat_2', 6),
    ('id_1', 'cat_3', 4),
    ('id_2', 'cat_1', 5),
    ('id_2', 'cat_2', 2),
    ('id_2', 'cat_3', 1),
    ('id_3', 'cat_1', 2),
    ('id_3', 'cat_2', 4),
    ('id_3', 'cat_3', 44);

Je souhaite pivoter cette table, de manière à n'avoir qu'une ligne par identifiant. Ainsi, les modalités de la colonne "cat" deviendraient des colonnes.


A ce jour, je connais quelques manières d'y arriver, notamment :

Code:

select code_iris, 
        sum(case cat when 'cat_1' then valeur end) as cat_1,
        sum(case cat when 'cat_2' then valeur end) as cat_2,
        sum(case cat when 'cat_3' then valeur end) as cat_3
from ma_table
group by 1
order by 1

L'énorme inconvénient, c'est le fait que je suis obligé de taper chaque modalité. Dans le cas où j'en ai plusieurs dizaines, cela me semble compliqué.

Je me demandais s'il existe une manière de rendre cette tâche moins compliquée, que ce soit une extension ou fonction ?


Merci.

Hors ligne

 

#2 Tue 24 November 2020 20:12

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: pivot_table dynamique sur Postgre ?

Bonsoir,

l'extension tablefunc est votre amie.

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB