SQL Server经典面试题之一

 SQL Server经典面试题之一
朱二(2006.12 转载请注明作者)


问题说明:有三个表,项目表、合同表、付款表
一个项目可能会有签署多个合同,每个合同会分几次付款。

--下面是建立表的语句
create table 项目(项目编号 int,项目名称 varchar(50))
insert 项目
select 1, '项目1'
union
select 2, '项目2'
union
select 3, '项目3'


create table 合同(合同编号 int,项目编号 int,合同金额 numeric(7,3))

insert 合同
select 1,1,1000
union
select 2,1,1500
union
select 3,2,2000

create table 付款(付款编号 int,合同编号 int,付款金额 numeric(7,3))

insert 付款
select 1,1,100
union
select 2,2,200
union
select 3,2,800

 

问题(一):
设计一个查询,要求返回结果如下:
----------------------------------------------------------
项目编号    项目名称             项目所有合同的金额     
----------- ------------------------ ---------------------
1           项目1                    2500
2           项目2                    2000
3           项目3                    NULL


问题(二):
设计一个查询,要求返回结果如下:
--------------------------------------
项目编号    项目所有合同已付款金额   
----------- --------------------------
1           1100
2           NULL
--------------------------------------

问题(三)
设计一个查询,要求返回结果如下:
项目编号    项目名称        项目所有合同已付款金额 
----------- ----------------------------------------
1           项目1   1100
2           项目2   NULL
----------------------------------------------------

问题(四):
请您设计一个查询语句,检索的格式如下:
------------------------------------------------------------------------
项目编号    项目名称    项目所有合同的金额    项目所有合同已付款金额 
------------------------------------------------------------------------
1           项目1        2500.000              1100.000
2           项目2        2000.000              NULL
------------------------------------------------------------------------

考核点:问题一、二、三考核连接、分组统计的综合运用
 问题四考核连接、分组统计、子查询的综合运用

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值