1、一、 按部门名称查询出员工的人数大于等于 100 的语句.(员工:emp_employee, 部门名称: department,员工姓名 chnalias.)SELECT departrnent FROM emp_employee GROUP BY departrnent HAVING COUNT(*) =100二、把员工的姓名、性别和年龄显示出来。 (员工表 emp_employee, 员工姓名:chnalias,年龄 age,性别:gender。性别表:pub_gendar_info,性别名称:smpalias,与员工表的性别关SELECT e.chnalias,g.smpalias,e.
2、age FROM emp_employee e INNER JOIN pub_gendar g ON e.gendar = g.smpalias三、当部门表的名称为空时,用 0 来代替。 (部门表 org_department 名称 smpalias)SELECT (CASE WHEN smpalias=null THEN 0 ELSE smpalias END) AS 部门名称 FROM org_departmenSelect replace(smpalias,null,0) from org_department四、删除员工表中的姓名重复的数据,只保留重复数据中的一条数据。 (员工表emp
3、_employee,员工姓名:chnalias)DELETE FROM emp_employee WHERE id NOT IN ( SELECT MAX(id) AS id FROM emp_employee GROUP BY chnalias )五、有三个部门:1 人力资源部,2 信息中心,3.安全监察部分别把这个三个部门的人员统计出来。要求用 sql 语句一行来实现 (员工表 emp_employee,员工姓名:chnalias,员工表对应的部门 id:department. 。部门表:org_departmen 。部门表的字段:部门名称smpalias,部门主键: id)部门表的 id
4、=员工表的 department显示的结果应该是:人力资源部 信息中心 安全监察部10 20 30SELECT SUM (f.s1) AS 人力资源部 , SUM (f.s2) AS 信息中心 , SUM (f.s3)AS 信息中心 from (SELECT(CASE WHEN d.smpalias=人力资源部 THEN SUM(e.Departid) END) AS s1,(CASE WHEN d.smpalias=信息中心 THEN SUM(e.Departid) END) AS s2,(CASE WHEN d.smpalias=安全监察部 THEN SUM(e.Departid) END
5、) AS s3FROM emp_employee e INNER JOIN org_departmen d ON e.departId=d.idGROUP BY d.smpalias ) f六、查询出差表中的每个员工最近的出差时间和员工姓名(出差表 emp_travel,员工姓名 chnalias,出差时间 godate)SELECT chnalias,godate FROM emp_travel ORDER BY godate DESC七、请写一个存储过程,把 emp_employee 表中的 chnalias 这个字段的名称更新为您好。CREATE PROC proc_updateempA
6、SUPDATE FROM emp_employee SET chnalias = 您好 GOEXEC proc_updateemp八、请写一个函数,用来实现把一个字段的内容横向显示出来。 (表 pub_codeitem_inf,代码组字段 groupcode,名称字段:smpalias.每行内容用逗号分开)create function dbo.f_str(id int) return varchar(100)asbegindeclare str varchar(1000)set str=;select str=str+,+cast(smpalias as varchar) from pub_
7、codeitem_inf where groupcode=idset str=right(str,len(str)-1)return strendgo-调用函数select groupcode,smplias=dbo.f_str(groupcode) from pub_codeitem_inf group by groupcode九、请写一个游标用来把表中的数据显示出来(表 emp_employee,显示姓名 chnalias 和单位company)Create proc employeecompany varchar(50)=chnalias varchar(50)=asdeclare cu
8、rListset curList= cursor forselect chnalias,company from emp_employeeopen curList fetch next from curList into chnalias,companywhile(fetch status=0)beginprint chnalias+companyfetch next from curList into chnalias,companyendclose curListdeallocate curList十、请用 sql 语句写一个从 1 减到 100 的语句出来。Declare star int ,sum intSelect star =1,sum=0While(star=100)BeginSet sum= sum - starSet star= star + 1End Select sum