Maison  >  Questions et réponses  >  le corps du texte

Comment combiner 3 tableaux différents en un seul pour créer des données agrégées ?

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粉891237912P粉891237912183 Il y a quelques jours277

répondre à tous(1)je répondrai

  • P粉674999420

    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           ;

    https://dbfiddle.uk/S61QeLBX

    répondre
    0
  • Annulerrépondre