请问查询每一个部门中的第一个员工,Sql语句怎么写?
员工按其ID自然排序,取每个部门中的员工ID最小的人员姓名!员工表emp:eID,eName,DepID部门表dept:DeptID,dName...
员工按其ID自然排序,取每个部门中的员工ID最小的人员姓名!
员工表 emp:eID,eName,DepID
部门表 dept:DeptID,dName 展开
员工表 emp:eID,eName,DepID
部门表 dept:DeptID,dName 展开
4个回答
展开全部
create table emp
(eid int identity(1,1),
eName varchar(10),
DepID int
)
insert into emp
select '张三',1 union
select '李四',1 union
select '王五',2 union
select '赵六',1 union
select '刘七',3 union
select '邹八',2 union
select '鲁九',2 union
select '周十',3
create table dept
(DeptID int identity(1,1),
dName varchar(10)
)
insert into dept
select '研发部' union
select '产品部' union
select '人事部'
________________(以上是建表和数据的代码,如果你有,你可以忽略)________________
其实一个表就可以了。
select * from emp
where
(select count(1) from emp a where a.DepID=emp.DepID and emp.eid>a.eid)<1
结果:
eID,eName,DepID
1 李四 1
2 刘七 3
3 鲁九 2
具体原理可参看我空 间的文章
SQL分类下的《取得分组TOP-N测试表与测试数据》
(eid int identity(1,1),
eName varchar(10),
DepID int
)
insert into emp
select '张三',1 union
select '李四',1 union
select '王五',2 union
select '赵六',1 union
select '刘七',3 union
select '邹八',2 union
select '鲁九',2 union
select '周十',3
create table dept
(DeptID int identity(1,1),
dName varchar(10)
)
insert into dept
select '研发部' union
select '产品部' union
select '人事部'
________________(以上是建表和数据的代码,如果你有,你可以忽略)________________
其实一个表就可以了。
select * from emp
where
(select count(1) from emp a where a.DepID=emp.DepID and emp.eid>a.eid)<1
结果:
eID,eName,DepID
1 李四 1
2 刘七 3
3 鲁九 2
具体原理可参看我空 间的文章
SQL分类下的《取得分组TOP-N测试表与测试数据》
追问
(select count(1) from emp a where a.DepID=emp.DepID and emp.eid>a.eida.eid 返回的结果是什么?这语句确实看不懂!谢谢您的回复!
追答
你运行一下这个语句就明白了。我说过可以去我空间看的。
select *,(select count(1) from emp b where emp.DepID=b.DepID and emp.eid>b.eid ) as '同部门比此ID大的员工数量' from emp
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select top 1 form ....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT eID,eName FROM emp
INNER JOIN
(
SELECT min(eID) as minEID,DepID from emp
GROUP BY DepID
) t1
ON emp.eID = t1.minEID
INNER JOIN
(
SELECT min(eID) as minEID,DepID from emp
GROUP BY DepID
) t1
ON emp.eID = t1.minEID
追问
请问语句 “SELECT min(eID) as minEID,DepID from emp GROUP BY DepID ”的返回结果是什么? 再给咱详细解析一下各条子查询的意思!谢谢!
追答
SELECT min(eID) as minEID,DepID from emp GROUP BY DepID
返回的结果表(命名为t1)中包含两个字段:
DepID :部门ID
minEID:该部门各员工的最小ID
在t1中,只有员工的ID,没有员工的姓名,所以要把t1与员工表emp来结合起来再查询一次,连接的条件为:emp.eID = t1.minEID ,这样就得到了你想要的结果。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上正解。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |