SQL面试题(七)

3 个表如下示,一个项目有多个合同,一个合同有多个收款记录
建表:

create table project(id varchar(10),name varchar(10));
create table hetong(id varchar(10),projectid varchar(10),hetongkuan varchar(10));
create table inmoney(id varchar(10),hetongid varchar(10),money varchar(10));
insert into project values("1","pro1");
insert into project values("2","pro2");
insert into project values("3","pro3");
insert into hetong values("1","1",1000);
insert into hetong values("2","1",2000);
insert into hetong values("3","2",3000);
insert into inmoney values("1","1",500);
insert into inmoney values("2","1",300);
insert into inmoney values("3","2",200);
insert into inmoney values("4","2",300);
insert into inmoney values("5","3",100);


问题1:
   每目的和同款
Sql:

SELECT a.id, a.name, SUM(b.hetongkuan) FROM project AS a, hetong AS b
WHERE a.id = b.projectid GROUP BY b.projectid;

问题2:

   每目已收

Sql:

SELECT a.id, a.name, b.hetongkuan, SUM(c.money) AS moneys FROM project AS a, hetong AS b, inmoney AS c
WHERE a.id = b.projectid AND b.id = c.hetongid GROUP BY c.hetongid;



问题3:
   每目合同数,已收
Sql:

SELECT * FROM inmoney;
SELECT d.id, d.name, SUM(d.hetongkuan) AS kuangs, SUM(d.moneys) AS moneys FROM (
SELECT a.id, a.name, b.hetongkuan, SUM(c.money) AS moneys FROM project AS a, hetong AS b, inmoney AS c
WHERE a.id = b.projectid AND b.id = c.hetongid GROUP BY c.hetongid) AS d
GROUP BY d.id;





 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值