Heim > Fragen und Antworten > Hauptteil
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粉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 ;