Comment obtenir la somme correcte de deux colonnes en utilisant le cas où
P粉103739566
P粉103739566 2024-03-19 23:49:06
0
1
395

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.

P粉103739566
P粉103739566

répondre à tous(1)
P粉590929392

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 :

SELECT salesperson_id,
       SUM(CASE WHEN salesperson_two_id IS NULL THEN 1 ELSE 0.5 END) totalDeals
FROM (
  SELECT salesperson_id, salesperson_two_id, sold_date FROM sold_logs
  UNION ALL
  SELECT salesperson_two_id, salesperson_id, sold_date FROM sold_logs WHERE salesperson_two_id IS NOT NULL
) t
WHERE MONTH(sold_date) = 7 AND YEAR(sold_date) = 2022
GROUP BY salesperson_id
ORDER BY totalDeals DESC;

Voir Démo.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!