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
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