SQL Server 技术水平测试题
一、语言测试题(50分)
注:只需写出语句,不必列出执行结果
前提:假设现有两张表,以【A0190】(人员编号)为关联。表结构分别如下描述:
Insert into A64(人员编号,学历,所学专业,入学时间)
values (12,’大本毕业’,’企业管理’,’1979-7-1’);
3、更新A01表,把所有“王”姓人员,变成“李”姓人员(10分)
update A01 set A0101= '李'+ SUBSTRING(A0101, LEN('王') + 1, LEN(A0101)) where A0101like '王%'
4、写出一段语句,计算出在70年代的人员占总数的百分比是多少?(5分)
Select (Select count(1) form A01 where
CONVERT(VARCHAR(10),出生日期,120) >’1970%’
and CONVERT(VARCHAR(10),出生日期,120) <’1980%’
) / count(1) as a1 form A01
5、更新A01表,根据【出生日期】,得出每个人的年龄(5分)
提示:与系统时间比较,取相差年数
Update A01 set A01101 = DATEDIFF(year,A0111,getdate()) where A0190=A0190
6、查询出A01表中大于平均年龄的人员名单(5分)
Select * from A01 where DATEDIFF(year,A0111,getdate()) >(Select sum(DATEDIFF(year,A0111,getdate())) / count(1) from A01)
7、查询出A01表中,学历记录〉=2的人员名单(15分)
提示:A01与A64 【A0190】关联,以A64中每个人的记录数〉=2为条件
Select * from A01 where A0190 in (Select A01.A0190 from A01 left join A64 on A01.A0190 = A64.A0190 group by having count(A0190) >= 2)
加试题:
C21表中,应税工资【C2101】,个人所得税【C2102】
根据个人所得税计算公式及税率表,计算出个人所得税。
语句应该涵盖各种税率,要求用Case语句。
个人所得税计算公式:
select
case when (C2101-1600) <500 then (C2101-1600) * C2102
case when (C2101-1600) BETWEEN 500 and 2000
then (C2101-1600)* C2102 -25
case when (C2101-1600) BETWEEN 2000 and 5000
then (C2101-1600)* C2102 -125
case when (C2101-1600) BETWEEN 5000 and 20000
then (C2101-1600)* C2102 -375
case when (C2101-1600) BETWEEN 20000 and 40000
then (C2101-1600)* C2102 -1375
case when (C2101-1600) BETWEEN 40000 and 60000 then (C2101-1600)* C2102 -3375
case when (C2101-1600) BETWEEN 60000 and 80000 then (C2101-1600)* C2102 -6375
case when (C2101-1600) BETWEEN 80000 and 100000 then (C2101-1600)* C2102 -10375
else
(C2101-1600)* C2102 -15375
end
from C21