如何将3个不同的表合并成一个表来创建聚合数据?
P粉891237912
P粉891237912 2024-03-31 12:45:39
0
1
360

希望你们都做得很好! :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粉891237912
P粉891237912

全部回复(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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板