A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

     --把工资大于2000的员工的姓名和部门的名称输出 和 工资的等级
      --【sql99标准】
      --【三表连接】 分析:首先通过deptno字段关联emp跟dept表这样就形成一张

临时表,
          然后在通过临时表里面的E.sal跟salgrade表里面的工资范围来连接。
      **************重点************************
      *select E.ename,D.name, S.grade          *
      *from emp E                              *
      *join dept D on E.deptno=D.deptno        *
      *join salgrade S                         *
      *on E.sal >= S.losal and E.sal <= S.hisal*
      *where E.sal >2000                       *
      ******************************************

      --【sql92标准格式如下】

       select*
       from emp E,dept D,salgrade S
       where E.deptno=D.deptno and (E.sal >= S.losal and E.sal <= S.hisal)

and E.sal > 2000

      --总结:所以推荐99标准~!



     5:select from where join on group by order by
       top having 的混合使用
     6 习题
           1、求出每个员工的姓名,部门编号,薪水和薪水的等级
           2、查找每个部门的编号 该部门所有员工的平均工资  平均工资的等级   


           3、求出emp表中所有领导的姓名
           4、求出平均薪水最高的部门编号,和该部门的平均工资
           5、把工资大于所有员工中工资最低的前3人的姓名,工资,部门编号,
           部门名称,工资等级 、输出


输出工资最高的前3名 的 名字,工资,工资等级,部门名称

  emp 员工表  dept  部门表    salgrade工资等级表


select E.name,E.sal,S.grade,D.name
from emp E
join dept D on E.deptno=D.deptno
join sargrade S on (E.sal >= S.losal and E.sal <= S.hisal)
where E.ename not like '%A%'
order by  E.sal desc   --排序永远是最后一步



习题集
--求出每个员工的姓名 部门编号 薪水  和薪水等级
select E.name,D.deptno,E.sal,S.grade
from emp E
join dept D on E.deptno=D.deptno   --这段可以省略,因为在emp表里可以查询到

deptno字段,写上也不为错
join salgrade S on (E.sal>=S.losal) and (E.sal<=S.hisal)


--查找每个部门的编号 该部门所有员工的平均工资   平均工资等级
select deptno,avg(E.sal),s.grade         --嵌套查询
   from (select deptno avg(E.sal)
         from emp
         group by deptno) T
   join salgrade S on avg(E.sal) between S.losal and S.hisal


--查找每个部门编号 部门名称 该部门平均工资 平均工资等级
在上面代码后添加join dept D
                on D.deptno = T.deptno

--求出emp表中的所有领导的信息
select * from emp
where empno in (select mgr from emp)

--输出emp表中所有非领导的信息
select * from emp
where empno not in (select mgr from emp)  --嵌套查询

--输出平均薪水最高的部门编号和部门的平均工资
select top 1 avg(E.sal),E.deptno
from emp E
group by E.deptno
order by avg(E.sal) desc

--把工资最低的前3个人的姓名 工资,部门编号 部门名称 工资等级输出
emp 员工表  dept  部门表    salgrade工资等级表

select T.name,T.sal,T.deptno,S.grade
from (select top 3 sal,deptno
       from emp
       group by deptno
       order by sal ) T
join salgrade S on T.sal between S.losal and S.hisal

分页查询

create procedure usp_User_SelectByPage
@PageSize int,
@PageIndex int

as
===这个是错的存储过程
select top(@PageSize)* from  dbo.tb_User
where UserID not in (select top(@PageSize*(@PageIndex-1)) UserID from

dbo.tb_User)
go

分页的sql语句
select top 4 * from tbUser where UserID not in (select top 4 UserID from

tbUser)

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马