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 Fri 03 November 2017 12:22

bruhnild
Participant actif
Lieu: Lyon
Date d'inscription: 7 Jun 2014
Messages: 130

Compter le nombre string différents dans un array

Bonjour,

J'ai une table chambre avec des fonctions différentes. Je cherche à obtenir dans  une seule ligne le nombre de chambre par fonction et par id_opportunité. J'ai joins une capture d'écran de ce que cette requete me renvoit.

Code:

select id_opp,count(fonction) as count, fonction 
from coordination.chambres
where id_opp like 'OPP_LT_26381_JLAN_001'
group by id_opp, fonction

L'idée serait d'avoir quelque chose comme ça :

id_opp                                  fonction

OPP_LT_26381_JLAN_001   [6 Desserte, 7 Transport]

Sauriez vous m'aider?

Merci d'avance!

Marine.

Dernière modification par bruhnild (Fri 03 November 2017 12:25)

Hors ligne

 

#2 Fri 03 November 2017 14:20

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: Compter le nombre string différents dans un array

Salut

Code:

SELECT id_opp, 
count(CASE WHEN fonction = 'Desserte' THEN 1 ELSE NULL END) count_desserte,
count(CASE WHEN fonction = 'Transport' THEN 1 ELSE NULL END) count_transport
,etc...
FROM coordination.chambres
GROUP BY id_opp

ou

Code:

SELECT id_opp, array_agg(ARRAY[foo.fonction, foo.count]) freqs
FROM
   (SELECT id_opp, fonction, count(*) FROM  FROM coordination.chambres
    GROUP BY id_opp, fonction) foo
GROUP BY id_opp

Dernière modification par tumasgiu (Fri 03 November 2017 14:22)

Hors ligne

 

#3 Fri 03 November 2017 14:45

bruhnild
Participant actif
Lieu: Lyon
Date d'inscription: 7 Jun 2014
Messages: 130

Re: Compter le nombre string différents dans un array

Merci tumasgiu!

La première requete renvoi le résultat voulu. Quant à la deuxième, j'aurais aimé qu'elle fonctionne mais PG Admin me renvoi cette erreur :
ERREUR:  les ARRAY types character varying et bigint ne peuvent pas correspondre
LINE 1: SELECT id_opp, array_agg(ARRAY[foo.fonction, foo.count]) fre...

Hors ligne

 

#4 Fri 03 November 2017 15:21

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: Compter le nombre string différents dans un array

Oui j'ai écrit un peu trop vite,

Code:

SELECT id_opp, array_agg((foo.fonction, foo.count)) freqs
FROM
   (SELECT id_opp, fonction, count(*) FROM  FROM coordination.chambres
    GROUP BY id_opp, fonction) foo
GROUP BY id_opp

ou bien

Code:

SELECT id_opp, array_agg(ARRAY[foo.fonction, foo.count::text]) freqs
FROM
   (SELECT id_opp, fonction, count(*) FROM  FROM coordination.chambres
    GROUP BY id_opp, fonction) foo
GROUP BY id_opp

Dernière modification par tumasgiu (Fri 03 November 2017 15:34)

Hors ligne

 

Pied de page des forums

Powered by FluxBB