搜尋

首頁  >  問答  >  主體

如何將3個不同的表格合併成一個表格來建立聚合資料?

希望你們都做得很好! :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粉891237912P粉891237912241 天前383

全部回覆(1)我來回復

  • 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

    回覆
    0
  • 取消回覆