SQL Server — 复杂查询 分组查询—— 学习笔记

来源:互联网 发布:海森矩阵 编辑:程序博客网 时间:2024/06/05 19:12


SQL语句从右向左执行。Select语句优化,尽量把要显示结果的放在最右面,如下例子:


--显示所有员工中最高工资和最低工资

select ename,sal from emp where sal = (select min(sal) from emp)


--显示所有员工的平均工资和工资总和

select avg(sal)  平均工资 , sum(sal) 总工资 from emp

--把高于平均工资的员工名字和他的工资显示

把上面平均工资看做结果

select  ename,sal  from emp where sal > (select avg(sal) from emp)



显示平均工资是:select avg(sal) from emp

那么显示部门的呢?只需加个部门号嘛:

select avg(sal) ,deptno from emp group by deptno  (NOTE: group by分组来用!)

显示每个部门的平均工资和最高工资

select avg(sal) , deptno, max(sal) from emp group by deptno  (NOTE:deptno可以在max(sal)后面,位置没关系,只要在就行)

显示部门名称。(多表查询)?


--显示每个部门的每种岗位的平均工资和最低工资 

select avg(sal) , min(sal), deptno,job from emp group bydeptno,job order by deptno , job


--显示平均工资低于2000的部门号和它的平均工资

select avg(sal)  , deptno from emp group by deptno having  avg(sal) < 2000

(NOTE:这里having和group by配合表示我们分组完后的结果再进行筛选)




--显示平均工资低于2000的部门号和它的平均工资,并且按照从低到高 

select avg(sal)  , deptno from emp group by deptno having  avg(sal) < 2000 order by avg(sal) asc

(NOTE:order by默认是升序,desc是降序,asc是升序)