#1 Wed 12 February 2020 18:37
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Afficher des pairs - Postgre
Bonjour à tous,
Disposant d'une table représentant des allés/retour entre commune et d'un champ d'entier, j'aimerais pouvoir faire une somme de ce dernier en regroupant les paires de destinations. Voici un exemple :
Je voudrais passer de ceci :
DEPART; ARRIVE; COUT_PEAGE
MARSEILLE; LA CIOTAT; 10
LA CIOTAT; MARSEILLE; 12
AUBAGNE; MARSEILLE; 20
MARSEILLE; AUBAGNE; 24
a ceci :
TRAJET; COUT_PEAGE
MARSEILLE - LA CIOTAT; 22
AUBAGNE - MARSEILLE; 44
Je ne sais pas trop comment m'y prendre.
Merci.
Hors ligne
#2 Wed 12 February 2020 19:55
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: Afficher des pairs - Postgre
Salut,
il faut joindre la table sur elle même et utiliser
la condition de jointure pour créer les paires.
Ne pas oublier de supprimer les doublons avec
distinct et la sous requête pour créer la chaine.
Sans ça on aurait :
MARSEILLE-AUBAGNE; 44
AUBAGNE-MARSEILLE; 44
Code:
SELECT DISTINCT ( SELECT string_agg(v, ' - ' ORDER BY v) FROM (VALUES (t1.depart), (t1.arrivee)) as foo(v) )AS TRAJET, t1.cout + t2.cout as cout_peage FROM trajet as t1 JOIN trajet as t2 ON t1.depart = t2.arrivee AND t2.depart = t1.arrivee
Lien vers un fiddle pour voir le résultat :
http://sqlfiddle.com/#!17/3577a/15
Dernière modification par tumasgiu (Wed 12 February 2020 20:15)
Hors ligne
#3 Wed 12 February 2020 20:01
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: Afficher des pairs - Postgre
Un grand merci a vous
Hors ligne