cch1010 2022-11-07 15:48 采纳率: 0%
浏览 20

mysql获取下级员工合计销量

销售员数据表:

create table salers(
salerId                int not null  , --销售员编号
salername            varchar(32),    --销售员姓名
parentid        int,            --上级编号
 primary key (salerId)    
)  

--单据表:

create table salebill(
BillId                int not null  , --单据编号
salerId            int,                --销售员编号
amount            int,                --销售金额
 primary key (BillId)
)

--造数据:
insert into salers(salerId,salername,parentid)
values(1,'张大',null),
 (2,'张一',1),
 (3,'张二',2),
 (4,'张三',3),
 (5,'李大',null),
 (6,'李一',5),
 (7,'李二',6),
 (8,'李三',7),
 (9,'张四',1),
 (10,'张五',1)  


insert into salebill(BillId,salerId,amount)
values(1,1,5),
 (2,2,2),
 (3,2,1),
 (4,3,2),
 (5,8,3),
 (6,10,4),
 (7,5,10),
 (8,7,3) 

求一mysql语句,根据类似上面造的数据(实际销售员工数据50多人,销售单据数据达到10万条),获得如下图结果(请不要使用with as):

 

 

 

  • 写回答

2条回答 默认 最新

  • 不要迷恋发哥 2022-11-26 12:21
    关注

    思路:
    1:把单据表根据业务员Id分组 汇总成单总额。
    2:业务员表与汇总表根据业务员Id左连接。注意,一定要左链接,因为实际情况中不是所有的业务员都会有成单记录

    select 
    a.salerId,a.salername, b.totalamount 
    from salers a 
    left join(
    select salerId,sum(amount) as totalamount from salebill group salerId) 
    as b 
    on a.salerId =b.salerId 
    
    评论

报告相同问题?

问题事件

  • 创建了问题 11月7日