Heim  >  Fragen und Antworten  >  Hauptteil

Wie kombiniere ich drei verschiedene Tabellen in einer Tabelle, um aggregierte Daten zu erstellen?

Ich hoffe, es geht euch allen gut! :D

Ich benötige deine Hilfe, um die folgenden Aufgaben zu erledigen:

Ich muss die folgende Tabelle erstellen:

Datum Einnahmen aus neuen Transaktionen Einkommensverlust durch Abwanderung Einnahmen aus Upsells
1. Januar 2022 1000$ -500 $ 1000$
2. Januar 2022 2000$ -200 $ 2000$

Was hier passiert, ist, dass ich zum Sammeln und Aggregieren dieser Daten drei verschiedene Tabellen benötige:

Transaktionen, Abwanderung und Upsells

HandelTabelle:

Handel Frist Ergebnis
Deal #1 1. Januar 2022 500 $
Deal #2 1. Januar 2022 500 $
Deal #3 2. Januar 2022 1500$
Deal #4 2. Januar 2022 500 $

VerlustTabelle:

Verlust Frist Einkommensverlust
Abwanderung #1 1. Januar 2022 -500 $
Abwanderung #2 2. Januar 2022 -100 $
Abwanderung #3 2. Januar 2022 -100 $

Upsell-Liste:

Upsell Frist Ergebnis
Upsell Nr. 1 1. Januar 2022 2000$
Upsell #2 1. Januar 2022 -1000 $
Upsell #3 2. Januar 2022 2000$

Die erste Frage lautet: Wie kann ich einen SQL-Befehl erstellen, um dies zu erreichen?

Vielen Dank im Voraus.

P粉891237912P粉891237912183 Tage vor283

Antworte allen(1)Ich werde antworten

  • P粉674999420

    P粉6749994202024-04-01 00:00:13

    您可以使用子查询对流失表和追加销售表进行聚合。

    如下所示:

    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

    请不要将日期存储为文本,您将面临很多困难。如果你想格式化日期,你可以使用 DATE_FORMAT

    注意。如果交易表中存在其他日期,而其他两个表中不存在,则会从结果中过滤掉该日期。如果您想要它,请使用LEFT JOIN而不是INNER JOIN

    **编辑

    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

    Antwort
    0
  • StornierenAntwort