1. 程式人生 > >查詢總結三 複雜查詢

查詢總結三 複雜查詢

查詢總結三 複雜查詢

資料分組max min avg sum count

#顯示所有員工最低工資和最高工資

select max(sal),min(sal) from emp; #列中有一個是分組函式其他類也必須是分組函式

select ename,sal  from emp where sal in ( select max(sal)from emp );

select ename,sal from emp where sal=( select max(sal)from emp);

#工資高於平均工資的員工資訊

select ename from emp where sal > avg(sal); X錯誤寫法

select ename from emp where sal >(select avg(sal) from emp); 對的寫法

#group by 和having子句

group by對查詢的結果分組統計

having限制分組的顯示結果

#顯示每個部門的平均工資和最高工資

分組欄位必須出現查詢列裡

select avg(sal),max(sal),deptno from emp group by deptno

#顯示每個部門的每種崗位的平均工資和最低工資

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

#顯示平均工資低於2000的部門號和他的平均工資

select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)>2000;

總結

  1. 分組函式只能出現在選擇列表、having、orderby子句中
  2. 如果select 語句中同時含有group by ,having,order by ,那麼他們的順序是group by ,having,order by
  3. 在選擇列中如果有列、表示式和分組函式,那麼這些列和表示式必須有一個出現在group by 子句中,否則會出錯。

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