文档详情

SQL编程练习题解析.doc

发布:2017-01-06约8.33千字共8页下载文档
文本预览下载声明
练习题 1、分别创建存储过程和函数实现两个数相除并且显示结果如果第二个 数是0则显示消息“not to DIVIDE BY ZERO”不为0则显示结果。 2、分别编写存储过程和函数计算1到100的累加和。 3、分别创建存储过程和函数显示EMP表中工资最高及工资最低的员工的 姓名、编号并在之后标出“工资最高”或“工资最低”字样。 4、创建一个函数Emp_Avg根据员工号返回员工所在部门的平均工资。 5、创建表jobday表结构如下DayID nvarchar (50) 主键日期格式yyyyMMddWeek nvarchar (1) NOT NULL 星期几中文表示IsJobDay int NOT NULL 是否是周六或周日0表示不是1表示是编写存储过程实现根据参数值传入的年份向jobday表中写入该年对应 的每一天的日期及各日期所对应的是星期几并在isjobday列中使用0 或1进行标识。 6、编写存储过程根据参数值传入的年份统计该年份以后被 雇佣的各项工作每年的雇佣人数。显示效果如下 job_id 1995 1996 1997 1998 1999 2000 ---------- ----------- ----------- ----------- ----------- ----------- ----------- AC_ACCOUNT 0 0 0 0 0 0 AC_MGR 0 0 0 0 0 0 AD_ASST 0 0 0 0 0 0 AD_PRES 0 0 0 0 0 0 AD_VP 0 0 0 0 0 0 FI_ACCOUNT 0 0 2 1 1 0FI_MGR 0 0 0 0 0 0 HR_REP 0 0 0 0 0 0 IT_PROG 0 0 1 1 1 0 MK_MAN 0 1 0 0 0 0 MK_REP 0 0 1 0 0 0. 。。。。。。 程序设计题 假设在factory数据库中已创建了如下3个表, (1)职工表worker,其结构为: 职工号:int,姓名:char(8),性别:char(2),出生日期:datetime,党员否:bit,参加工作:datetime,部门号:int。 (2)部门表depart,其结构为: 部门号:int,部门名:char(10)。 (3)职工工资表salary,其结构为: 职工号:int,姓名:char(8),日期:datetime,工资:decimal(6,1)。 1.使用Transact-SQL语句完成如下各题: (1).显示所有职工的年龄。 (2).求出各部门的党员人数。 (3).显示所有职工的姓名和2004年1月份工资数。 (4).显示所有职工的职工号、姓名和平均工资。 (5).显示所有职工的职工号、姓名、部门名和2004年2月份工资,并按部门名顺序排列。 (6).显示各部门名和该部门的所有职工平均工资。 (7).显示所有平均工资高于1200的部门名和对应的平均工资。 (8).显示所有职工的职工号、姓名和部门类型,其中财务处和人事处属管理部门,市场部属市场部门。 答案: (1).SELECT 姓名,YEAR(GETDATE())-YEAR(出生日期) AS ‘年龄’ FROM worker (2).SELECT depart.部门名,count(*) AS ‘党员人数’ FROM worker,depart WHERE worker.党员否=1 AND worker.部门号=depart.部门号 GROUP BY depart.部门名 (3).SELECT worker.姓名,salary.工资 FROM worker,salary WHERE worker.职工号= salary.职工号 AND YEAR(salary.日期)=2004 AND MONTH(salary.日期)=1 (4). SELECT 职工号,,AVG(工资) AS ‘平均工资’ FROM salary GROUP BY 职工号 (5). SELECT worker.职工号,worker.姓名, depart.部门名, salary.工资 AS ‘2004年2月工资’ FROM worker,depart,salary WHERE worker.部门号=depart.部门号 AND worker.职工号= salary.职工号 AND YEAR(salary.日期)=2004 AND MONTH(salar
显示全部
相似文档