日期:2014-05-17  浏览次数:20463 次

SQL视图,求解
有以下三个表 
1.职员表: 
职员ID       部门ID       职员姓名 
2.部门表: 
部门ID       部门 
3.工资表: 
序号ID       职员ID       月份       工整 

请设计一个视图,查找出研发部2012年1月至2012年7月   工资最高的职员姓名,工资总额及平均工资
------最佳解决方案--------------------
create   view   myview   
as 
select   a.职员姓名,sum(b.工资)   as   工资总额,avg(b.工资)   as   平均工资 
from   职员表   a,工资表   b,部门表   c 
where   a.职员ID=b.职员ID   and   (部门= '研发部 '   and   a.部门ID=c.部门ID) 
and     (月份> = '2012-1-1 '   and   月份 <= '2012-7-31 ') 
and     b.工资=(select   max(工资)   from   工资表) 

------其他解决方案--------------------
create view v_q
as
select top 1 a.职员姓名,sum(c.工资) as 工资总额,avg(c.工资) as 平均工资
from 
  职员表 a,部门表 b,工资表 c
where
  a.职员id=c.职员id and a.部门id=b.部门id
where
  b.部门='研发部' and c.月份 between '2012-01' and '2012-07'
group by 
  a.职员姓名
order by
  sum(c.工资) desc
  
------其他解决方案--------------------
CREATE VIEW test 
  AS 
  SELECT TOP 1  职员姓名,SUM(工资)总额,AVG (工资)平均
  FROM 职员表 a INNER JOIN 部门表 b ON a.部门ID=b.部门ID
  INNER JOIN 工资表 c ON a.职员ID =c.职员ID 
  WHERE b.部门='研发部' AND c.月份 BETWEEN '1' AND '7'--猜测你的数据而已
  GROUP BY 职员姓名
  ORDER BY 工资 desc

漏了个条件
------其他解决方案--------------------
是总工资最高还是某个月?

MAX,SUM,AVG

参考着用。
------其他解决方案--------------------
CREATE VIEW test 
 AS 
 SELECT TOP 1  职员姓名,SUM(工资)总额,AVG (工资)平均
 FROM 职员表 a INNER JOIN 部门表 b ON a.部门ID=b.部门ID
 INNER JOIN 工资表 c ON a.职员ID =c.职员ID 
 WHERE b.部门='研发部' AND c.月份 BETWEEN '1' AND '7'--猜测你的数据而已
 GROUP BY 职员姓名
 ORDER BY 工资
 
 

我的异常网推荐解决方案:软件开发者薪资,http://www.aiyiweb.com/other/1391128.html