[MarketingCloud] tri de groupes en ne récupérant que le 1er élément

tri de groupes en ne récupérant que le 1er élément [MarketingCloud] - SQL/NoSQL - Programmation

Marsh Posté le 13-10-2022 à 14:14:26    

Bonjour,
 
Je dispose d'une table avec les champs suivants :

siret | nom | fonction  
------|-----|----------
222222| DDD | assistant
111111| AAA | directeur
111111| BBB | président
111111| CCC | assistant
222222| EEE | directeur
333333| GGG | directeur
333333| FFF | assistant


 
Je souhaiterai trier par fonction (1. président, 2. directeur, 3. assistant) et n'avoir en sortie que le premier élément pour chaque siret.
Pour le tri, j'ai trouvé sous MySQL :

select * from ma_table ORDER BY siret, CASE  
         WHEN fonction = 'président' THEN 1
         WHEN fonction = 'directeur' THEN 2
         WHEN fonction = 'assistant' THEN 3


 
A l'issue du tri, j'obtiens :

siret | nom | fonction  
------|-----|----------
111111| BBB | président
111111| AAA | directeur
111111| CCC | assistant
222222| EEE | directeur
222222| DDD | assistant
333333| GGG | directeur
333333| FFF | assistant


 
Reste que je voudrais obtenir à la fin uniquement :

siret | nom | fonction  
------|-----|----------
111111| BBB | président
222222| EEE | directeur
333333| GGG | directeur


 
Comment ne conserver que le premier élément de chaque siret trié sur la fonction ?
 
Merci d'avance pour vos idées, j'ai testé pas mal de choses mais je sèche !


Message édité par benj63 le 13-10-2022 à 15:44:02

---------------
Projet d'aquarium low-tech (menuiserie, élec et aquascaping) | Zelda - Breath of the Wild
Reply

Marsh Posté le 13-10-2022 à 14:14:26   

Reply

Marsh Posté le 13-10-2022 à 14:38:31    

GROUP BY siret
 
Sur du Mysql 8, il va peut-être râlé parce que c'est pas du SQL standard (normalement, un group by doit contenir tous les champs du SELECT sauf ceux d'agrégation). Mais il suffit de retirer l'option ONLY_FULL_GROUP_BY dans le fichier de conf de mysql pour que ça passe.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 13-10-2022 à 14:42:13    

rufo a écrit :

GROUP BY siret
 
Sur du Mysql 8, il va peut-être râlé parce que c'est pas du SQL standard (normalement, un group by doit contenir tous les champs du SELECT sauf ceux d'agrégation). Mais il suffit de retirer l'option ONLY_FULL_GROUP_BY dans le fichier de conf de mysql pour que ça passe.


Oui c'est ce que j'avais tenté mais il râle. Je vais voir pour désactiver l'option.... mais si ce n'est pas possible de la désactiver ?


---------------
Projet d'aquarium low-tech (menuiserie, élec et aquascaping) | Zelda - Breath of the Wild
Reply

Marsh Posté le 13-10-2022 à 15:03:05    

Pourquoi ça ne le serait pas ?
Il me que c'est le genre de paramètre qu'on peut faire passer par requête SQL en début de session de connexion.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 13-10-2022 à 15:43:22    

rufo a écrit :

Pourquoi ça ne le serait pas ?
Il me que c'est le genre de paramètre qu'on peut faire passer par requête SQL en début de session de connexion.


En effet  :)  
 
Enfin j'ai à présent un autre souci, ça marche bien sous MySQL mais sous le logiciel final (Marketing Cloud de Salesforce), j'ai ça :
https://i.imgur.com/o2uZYMn.png
 :(


---------------
Projet d'aquarium low-tech (menuiserie, élec et aquascaping) | Zelda - Breath of the Wild
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed