希望你們都做得很好! :D
我需要您的幫助來完成以下任務:
我需要建立下表:
日期 | 從新交易中獲得的收入 | 因流失而損失的收入 | 追加銷售所獲得的收入 |
---|---|---|---|
2022 年 1 月 1 日 | 1000 美元 | -$500 | 1000 美元 |
2022 年 1 月 2 日 | $2000 | -$200 | $2000 |
這裡的情況是,為了收集和聚合這些數據,我需要取得 3 個不同的表:
交易、流失與追加銷售
交易表格:
交易 | 截止日期 | 贏得的收入 |
---|---|---|
交易#1 | 2022 年 1 月 1 日 | $500 |
交易#2 | 2022 年 1 月 1 日 | $500 |
交易 #3 | 2022 年 1 月 2 日 | $1500 |
交易#4 | 2022 年 1 月 2 日 | $500 |
流失表格:
流失 | 截止日期 | 收入損失 |
---|---|---|
流失#1 | 2022 年 1 月 1 日 | -$500 |
流失#2 | 2022 年 1 月 2 日 | -100 美元 |
流失#3 | 2022 年 1 月 2 日 | -100 美元 |
加售表:
#追加銷售 | 截止日期 | 贏得的收入 |
---|---|---|
追加銷售#1 | 2022 年 1 月 1 日 | $2000 |
追加銷售 #2 | 2022 年 1 月 1 日 | -1000 美元 |
追加銷售#3 | 2022 年 1 月 2 日 | $2000 |
第一個問題是: 如何建立 SQL 命令來完成此操作?
提前致謝。
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 ;