查詢總結三 複雜查詢
查詢總結三 複雜查詢
資料分組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;
總結
- 分組函式只能出現在選擇列表、having、orderby子句中
- 如果select 語句中同時含有group by ,having,order by ,那麼他們的順序是group by ,having,order by
- 在選擇列中如果有列、表示式和分組函式,那麼這些列和表示式必須有一個出現在group by 子句中,否則會出錯。
如
select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal) <2000;