Maison > Questions et réponses > le corps du texte
J'espère que vous allez tous bien ! :D
J'ai besoin de votre aide pour réaliser les tâches suivantes :
Je dois créer le tableau suivant :
Date | Revenus des nouvelles transactions | Revenu perdu en raison du désabonnement | Revenus des ventes incitatives |
---|---|---|---|
1er janvier 2022 | 1000$ | -500$ | 1000$ |
2 janvier 2022 | 2000$ | -200$ | 2000$ |
Ce qui se passe ici, c'est que pour collecter et agréger ces données, j'ai besoin d'obtenir 3 tableaux différents :
Transactions, désabonnement et ventes incitatives
CommerceTableau :
Commerce | Date limite | gains |
---|---|---|
Offre #1 | 1er janvier 2022 | 500 $ |
Offre #2 | 1er janvier 2022 | 500 $ |
Offre #3 | 2 janvier 2022 | 1 500 $ |
Offre #4 | 2 janvier 2022 | 500 $ |
PerteTableau :
Perte | Date limite | Perte de revenus |
---|---|---|
churn #1 | 1er janvier 2022 | -500$ |
churn #2 | 2 janvier 2022 | -100$ |
churn #3 | 2 janvier 2022 | -100$ |
Liste de ventes incitatives :
Vente incitative | Date limite | gains |
---|---|---|
Vente incitative #1 | 1er janvier 2022 | 2000$ |
Vente incitative #2 | 1er janvier 2022 | -1000$ |
Vente incitative #3 | 2 janvier 2022 | 2000$ |
La première question est : Comment puis-je créer une commande SQL pour accomplir cela ?
Merci d'avance.
P粉6749994202024-04-01 00:00:13
Vous pouvez utiliser des sous-requêtes pour agréger les tableaux de désabonnement et de vente incitative.
Comme indiqué ci-dessous :
select d.Closing_date, sum(d.Revenue_won) as 'Revenue gained from new deals', c.`Revenue lost from churn`, u.`Revenue gained from upsell` from deals d inner join ( select Closing_date, sum(Revenue_lost) as 'Revenue lost from churn' from churns group by Closing_date ) as c on c.Closing_date=d.Closing_date inner join ( select Closing_date, sum(Revenue_won) as 'Revenue gained from upsell' from upsells u group by Closing_date ) as u on u.Closing_date=d.Closing_date group by d.Closing_date ;
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=0875563c9ab7f9385711dde21cd98b47 一个>
Veuillez ne pas stocker les dates sous forme de texte, vous ferez face à beaucoup de difficultés. Si vous souhaitez formater la date, vous pouvez utiliser DATE_FORMAT
Attention. Si une autre date existe dans la table des transactions mais pas dans les deux autres tables, cette date sera filtrée des résultats. Si vous le souhaitez, utilisez LEFT JOIN
而不是INNER JOIN
.
**Modifier
select d.Closing_date, d.`Revenue gained from new deals`, c.`Revenue lost from churn`, u.`Revenue gained from upsell` from ( select Closing_date, sum(Revenue_won) as 'Revenue gained from new deals' from deals group by Closing_date ) as d inner join ( select Closing_date, sum(Revenue_lost) as 'Revenue lost from churn' from churns group by Closing_date ) as c on c.Closing_date=d.Closing_date inner join ( select Closing_date, sum(Revenue_won) as 'Revenue gained from upsell' from upsells u group by Closing_date ) as u on u.Closing_date=d.Closing_date ;