一个简单问题,怎样写SQL最简单
部门(部门ID)
员工(部门ID, 员工ID)
工资(员工ID, 年, 月, 工资)
给定某年某月, 如果返回一个列表, 某年某月每个部门中工资最高的员工(返回部门ID, 员工ID, 工资)
------解决方案--------------------select
a.*,b.年,b.月,b.工资
from
员工 a,工资 b
where
a.员工ID=b.员工ID
and
b.年=yyyy and b.月=mm
and
not exists(select
1
from
员工 c,工资 d
where
c.部门ID=d.部门ID
and
d.年=b.年 and d.月=b.月 and d.工资> b.工资)
------解决方案--------------------select b.部门ID,a.员工ID,min(工资)
from 工资 a , 员工 b
where a.员工ID=b.员工ID and a.年=指定年 and a.月 = 指定月
group by b.部门ID,a.员工ID
------解决方案----------------------try
select *
from
(
select 部门ID, 工资=max(工资)
from 员工 A
left join 工资 B on A.员工ID=B.员工ID
where B.年= ' ' and B.月= ' '
group by A.部门ID
)tmp
left join 工资 on tmp.工资=工资.工资
left join 员工 on tmp.部门ID=员工.部门ID
where B.年= ' ' and B.月= ' '
------解决方案--------------------select Y.ID,Y.id,G.g from Y,G where G.g=(select max(g) from G) and G.y=yy and G.m=mm
group by Y.id
------解决方案--------------------select d.darid,e.empid,e.salary from
(select a.darid,max(b.salary) as salary from department a ,employee b where a.empid =b.empid group by a.darid) as t ,
department d , employee e
where t.darid = d.darid and e.salary = t.salary and d.empid = e.empid
------解决方案--------------------更喜欢3楼的
select a.bmid,b.ygid,a.gz
from (select bb.bmid,max(aa.gz) as gz from gz aa join yg bb on aa.ygid=bb.ygid group by bb.bmid
where nian= ' ' and yue = ' '
) a
join gz b on a.gz=b.gz
我的异常网推荐解决方案:软件开发者薪资,http://www.aiyiweb.com/other/1391128.html