#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: 1160
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: 1160
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