Je développe un programme qui suivra les unités vendues par un vendeur, qui peuvent être soit une transaction complète (1), soit une demi-vente (0,5). Ce que je dois faire, c'est trouver un moyen d'obtenir la somme de toutes les transactions et la moitié des transactions regroupées par identifiant de vendeur.
Voici la structure de la base de données :
id | salesperson_id | salesperson_two_id | Date de vente |
---|---|---|---|
1 | 5 | vide | 2022-07-02 |
2 | 3 | 5 | 2022-07-18 |
3 | 4 | vide | 2022-07-16 |
4 | 5 | 3 | 2022-07-12 |
5 | 3 | 5 | 2022-07-17 |
6 | 5 | vide | 2022-07-18 |
Si je souhaite récupérer uniquement la SOMME d'un commercial, j'ai une requête valide :
SELECT SUM(case when salesperson_id = 5 and isnull(salesperson_two_id) then 1 end) as fullDeals, SUM(case when salesperson_id != 5 and salesperson_two_id = 5 or salesperson_id = 5 and salesperson_two_id != 5 then 0.5 end) as halfDeals FROM sold_logs WHERE MONTH(sold_date) = 07 AND YEAR(sold_date) = 2022;
Le résultat sera comme prévu :
Toutes les offres | Demi-affaire |
---|---|
2 | 1.5 |
Ce que je veux accomplir, c'est obtenir ces résultats pour tous les vendeurs du tableau mais je ne sais pas comment y parvenir. Voici le résultat que je souhaite obtenir :
salesperson_id | Total des transactions |
---|---|
5 | 3.5 |
3 | 1.5 |
4 | 1 |
J'aimerais que les résultats soient triés par nombre total de transactions si possible.
Utilisez
UNION ALL
pour obtenir un ensemble de résultats contenant toutes les lignes pour chaque vendeur, filtrez les mois souhaités et agrégez :Voir Démo.