Bonjour,
Je suis débutant en SQL, et je travaille sur une table "maison" pour apprendre les bases.
j'ai donc une table MySQL (table_chris), contenant des enregistrements, avec, pour faire simple :
une colonne ID de type integer clé primaire
une colonne outcome_code de type integer
une colonne vendeur de type string
J'ai des enregistrements du type :
Id Vendeur Outcome
------------------------
1 Toto 21
2 Tata 22
3 Tutu 51
4 Toto 22
5 Toto 51
6 Tata 22
7 Toto 22
8 Toto 21
9 Tata 21
Je souhaite calculer, pour chacun des vendeurs, le pourcentage d’occurrence de chaque outcome code.
J'ai donc un premier SELECT
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT Vendeur,COUNT(outcome_code) as Tot_outcome FROM schema_chris.table_chris GROUP BY Vendeur
qui me calcule bien, par vendeur, le nombre d'outcome code, qui me permettrait derrière une division du décompte de chaque outcome par ce tot_outcome.
Ensuite, j'imbrique cette requête dans ma requête globale :
Là, ça ne marche pas, pour la simple et bonne raison que outcome_code n'existe pas dans la sous table tot créée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT Vendeur,outcome_code, COUNT(outcome_code),Tot_outcome,COUNT(outcome_code)/Tot_outcome FROM (SELECT Vendeur,COUNT(outcome_code) as Tot_outcome FROM schema_chris.table_chris GROUP BY Vendeur) Tot GROUP BY Vendeur,outcome_code ORDER BY Vendeur,outcome_code;
Alors j'ai rajouté les champs dans ma sous table :
ce qui a le mérite de donner un résultat, mais qui n'est pas celui recherché.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT Vendeur,outcome_code, COUNT(outcome_code),Tot_outcome,COUNT(outcome_code)/Tot_outcome FROM (SELECT Vendeur,outcome_code, COUNT(outcome_code) as Tot_outcome FROM schema_chris.table_chris GROUP BY Vendeur) Tot GROUP BY Vendeur,outcome_code ORDER BY Vendeur,outcome_code;
Existe-t-il donc un moyen d'y arriver uniquement à partir de SELECT imbriqués, ou faut-il utiliser des choses que je ne connais pas encore (ie toute fonction différente de SELECT, ORDER, GROUP, FROM )
Partager