如图,求各种方式解决办法.

毛师兄 2013-02-26 11:27:08

--18、查询 部门当中每个员工基本工资都大于1200的部门名称

select distinct 员工.部门编号,部门.部门名称 from 员工,部门 where 员工.部门编号 not in (select 部门编号 from 员工 where 基本工资 < 1200 group by 部门编号 ) and 部门.部门编号=员工.部门编号


with ccc as
(
select 部门编号,基本工资,ROW_NUMBER() over (PARTITION by 部门编号 order by 基本工资 asc) as row from 员工
)
select b.部门名称 from ccc a inner join 部门 b on a.部门编号=b.部门编号 where a.row=1 and a.基本工资>1200

这二种方式可以正确的算出来,求详细的解释,或别的方式,谢谢.
...全文
172 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2013-02-26
  • 打赏
  • 举报
回复
第二种方式比较好理解吧。 分组求出每个部门基本工资最少的那个人 然后判最少的工资都大于1200的部门就OK了
毛师兄 2013-02-26
  • 打赏
  • 举报
回复
引用 3 楼 shulei521 的回复:
select 部门名称 from 部门 a join 员工 b on a.部门编号=b.部门编号 where a.基本工资>1200
错.
shulei521 2013-02-26
  • 打赏
  • 举报
回复
select 部门名称 from 部门 a join 员工 b on a.部门编号=b.部门编号 where a.基本工资>1200
毛师兄 2013-02-26
  • 打赏
  • 举报
回复
楼上的能分析一下吗?
  • 打赏
  • 举报
回复
select * from 部门表 where (select count(1) from 员工表 where 员工表.基本工资<=1200 and 员工表.部门编号=部门表.部门编号)<=0

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧