SQL Server经典面试题之一

来源:互联网 发布:淘宝店铺专卖非法词语 编辑:程序博客网 时间:2024/05/08 15:12

 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
------------------------------------------------------------------------

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

原创粉丝点击