sql查询语句,请高手做做,满意加分

来源:百度知道 编辑:UC知道 时间:2024/06/21 12:26:52
假设在factory数据库中已创建了如下3个表,
 职工表worker,其结构为:职工号:int,姓名:char(8),性别:char(2),出生日期:datetime,党员否:bit,参加工作:datetime,部门号:int。
 部门表depart,其结构为:部门号:int,部门名:char(10)。
 职工工资表salary,其结构为:职工号:int,姓名:char(8),日期:datetime,工资:decimal(6,1)。
使用Transact-SQL语句完成如下各题:
1.显示所有职工的年龄。
2.求出各部门的党员人数。
3.显示所有职工的姓名和2004年1月份工资数。
4.显示所有职工的职工号、姓名和平均工资。
5.显示所有职工的职工号、姓名、部门名和2004年2月份工资,并按部门名顺序排列。
6.显示各部门名和该部门的所有职工平均工资。
7.显示所有平均工资高于1200的部门名和对应的平均工资。
8.显示所有职工的职工号、姓名和部门类型,其中财务处和人事处属管理部门,市场部属市场部门。

1.select datediff(yy,出生日期,getdate()) from 职工表
2.select 部门号 as depName,count(职工号) as num from 职工表 where 党员否=(是党员的那个标志) group by 部门号
3.select a.姓名,b.工资 from 职工表 a,职工工资表 b where a.职工号=b.职工号 and b.日期=(数据库中存的2004年1月的日期)
4.select a.职工号,a.姓名,avg(b.工资) as avgSalary from 职工表 a,职工工资表 b where a.职工号=b.职工号 group by a.职工号,a.姓名
5.select a.职工号,a.姓名,b.部门名,c.工资 from 职工表 a,部门表 b,职工工资表 c where a.职工号=c.职工号 and a.部门号=b.部门号 and c.日期=(数据库中存的2004年2月的日期) order by b.部门名
6.select b.部门名,avg(c.工资) as avgSalary from 职工表 a,部门表 b,职工工资表 c where a.职工号=c.职工号 and b.部门号=a.部门号 group by b.部门名
7.select b.部门名,avg(c.工资) as avgSalary from 职工表 a,部门表 b,职工工资表 c where a.职工号=c.职工号 and b.部门号=a.部门号 group by b.部门名 having avg(c.工资)>1200
8.select a.职工号,a.姓名,(case when b.部门名='财务处' then '管理部门' when b.部门名='人事处' then '管理部门' else '市场部门' end) as depType
from 职工表 a,部门表 b where b.部门号=a.部门号