Wie kombiniere ich drei verschiedene Tabellen in einer Tabelle, um aggregierte Daten zu erstellen?
P粉891237912
P粉891237912 2024-03-31 12:45:39
0
1
408

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粉891237912
P粉891237912

Antworte allen(1)
P粉674999420

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

如下所示:

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage