Mobilités professionnelles de l'Insee (novice)
kevin
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
Bonjour,
Travaillant avec la mobilité professionnelle de l'Insee, je cherche à faire la somme d'un champ nommé Ipondi seulement sur les trajets commune de résidence à travail, et non pas travail à commune de résidence.
Admettons la colonne de commune de résidence nommée "Départ", et commune de travail nommée "Arrivée", et le champ que je souhaite faire la somme nommée "Ipondi", et admettons le cas suivant :
En effectuant la formule suivante ...
J'obtiens donc le résultat suivant :
Ce qui est normal. Je voudrais cependant "supprimer" la ligne Marseille; La Ciotat car c'est le trajet retour des deux premières lignes.
Ceci étant pour arriver à ce résultat :
Comment faire cela sur PostgreSQL ?
Merci.
Travaillant avec la mobilité professionnelle de l'Insee, je cherche à faire la somme d'un champ nommé Ipondi seulement sur les trajets commune de résidence à travail, et non pas travail à commune de résidence.
Admettons la colonne de commune de résidence nommée "Départ", et commune de travail nommée "Arrivée", et le champ que je souhaite faire la somme nommée "Ipondi", et admettons le cas suivant :
départ; arrivée; ipondi
La Ciotat; Marseille; 84
La Ciotat; Marseille; 15
Aubagne; Ceyreste; 12
Marseille; La Ciotat; 73
En effectuant la formule suivante ...
select départ, arrivée, sum(ipondi)
from trajets
group by départ, arrivée
J'obtiens donc le résultat suivant :
La Ciotat; Marseille; 99
Aubagne; Ceyreste; 12
Marseille; La Ciotat; 73
Ce qui est normal. Je voudrais cependant "supprimer" la ligne Marseille; La Ciotat car c'est le trajet retour des deux premières lignes.
Ceci étant pour arriver à ce résultat :
départ; arrivée; ipondi
La Ciotat; Marseille; 99
Aubagne; Ceyreste; 12
Comment faire cela sur PostgreSQL ?
Merci.
A voir également:
- Ipondi
- Clé de produit windows 10 professionnel - Guide
- Numéro insee carte vitale - Guide
- Logiciel de traduction professionnel gratuit - Télécharger - Traduction
- Exemple de rapport professionnel - Guide
- Besoin d'aide pour novice svp ✓ - Forum Virus
4 réponses
Bonjour,
Avec un Where ?
et si tu veux retirer des départ toutes les éventuelles ville d'arrivée
NB: Je n'ai pas mis d'accents... car.. en programmation on evite d'utiliser des caractères accentués et des caractères spéciaux dans le nom des variables, de nom de colonne dans une bdd ou dans le nom des tables. J'espère que tu n'as pas fait cette bêtise.. grosse source d'erreurs ou de complications en général....
Avec un Where ?
WHERE depart <> "Marseille"
et si tu veux retirer des départ toutes les éventuelles ville d'arrivée
WHERE depart NOT IN (SELECT DISCTINCT arrivee FROM trajets)
NB: Je n'ai pas mis d'accents... car.. en programmation on evite d'utiliser des caractères accentués et des caractères spéciaux dans le nom des variables, de nom de colonne dans une bdd ou dans le nom des tables. J'espère que tu n'as pas fait cette bêtise.. grosse source d'erreurs ou de complications en général....
Merci pour ta réponse. Effectivement, j'ai n'ai pas pensé à enlever les accents :s très bien de me le faire remarquer ^^
J'ai testé la formule, et elle est vraiment trop radicale ^^ dans mon fichier, je passe de 14500 entités à moins de 4000. De plus j'ai vérifié, et des éléments sont supprimés alors qu'ils ne le devrait pas (des trajets sans retour qui sont supprimés par exemple)
Effectivement, je travaille avec un plus gros fichier, voici un extrait.
Ainsi, la ligne 1 possède son sens inverse avec la ligne 5.
Et la ligne 3 avec la ligne 8.
En lien, mon fichier de données : https://drive.google.com/file/d/1TOB1MTAt8UNCjt0up6qcgnR593yMXkqt/view?usp=sharing
J'ai testé la formule, et elle est vraiment trop radicale ^^ dans mon fichier, je passe de 14500 entités à moins de 4000. De plus j'ai vérifié, et des éléments sont supprimés alors qu'ils ne le devrait pas (des trajets sans retour qui sont supprimés par exemple)
Effectivement, je travaille avec un plus gros fichier, voici un extrait.
id commune dclt ipondi
1 26058 26362 2930,034291
2 26235 26235 2556,313788
3 26252 26362 1375
4 26281 26362 1321,746085
5 26362 26058 1077,796173
6 26057 26057 1040,884915
7 26313 26362 898,4310606
8 26362 26252 859,2863628
Ainsi, la ligne 1 possède son sens inverse avec la ligne 5.
Et la ligne 3 avec la ligne 8.
En lien, mon fichier de données : https://drive.google.com/file/d/1TOB1MTAt8UNCjt0up6qcgnR593yMXkqt/view?usp=sharing
puisque, contrairement à ce que tu avais montré au départ, il y a une colonne id dans la table, tu voudrais peut-être imaginer d'éliminer tous les enregistrements pour lesquels un enregistrement précédent (id plus petit) a l'origine comme destination, et la destination comme origine.
cependant, je ne pense pas qu'il soit possible de faire cela avec une requête. il faudrait le faire par programme.
et, en réalité, je pense que ce n'est pas une bonne solution.
je pense que la bonne solution serait de différencier les lieux de résidence et les lieux de travail.
ne pourrais pas prendre en compte tous les trajets, et faire la moyenne?
cependant, je ne pense pas qu'il soit possible de faire cela avec une requête. il faudrait le faire par programme.
et, en réalité, je pense que ce n'est pas une bonne solution.
je pense que la bonne solution serait de différencier les lieux de résidence et les lieux de travail.
ne pourrais pas prendre en compte tous les trajets, et faire la moyenne?