Oracle單表的復雜查詢
select avg(sal)max(sal)deptnofrom empgroupby deptno;
select avg(sal)max(sal)deptnofrom empgroupby deptnohavingavg(sal)>orderby deptno;
查詢工資高於或者是崗位為MANAGER的雇員同時還要滿足他們的姓名首字母為大寫的J?
select *from empwhere (sal>or job=manager)and enamelikeJ%;
按照部門號升序而雇員的工資降序排列
select *from emporderby deptnoasc saldesc ;
select (sal+nvl(comm))*assumenamefrom emporderbysum;
求最高工資和最低工資
selectmax(sal)min(sal)from emp ;
查詢最高工資員工的名字工作崗位
select enamesalfrom empwhere (selectmax(sal)from emp )=sal;
顯示工資高於平均工資的員工信息
select *from empwhere sal>(selectavg(sal)from emp);
group by 和 having子句
group by用於對查詢的結果分組統計
having子句用於限制分組顯示結果
如何顯示每個部門的平均工資和最高工資
selectavg(sal)max(sal)deptnofrom empgroupby deptno;
顯示每個部門的每種崗位的平均工資和最低工資?
selectavg(sal)max(sal)min(sal)deptnojobfrom empgroupby deptnojob;
顯示平均工資低於的部門號和它的平均工資?
selectavg(sal)max(sal)deptnofrom empgroupby deptnohavingavg(sal)>orderby deptno;
對數據分組的總結
分組函數只能出現在選擇列表havingorder by子句中(不能出現在where中)
如果在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) < ;
From:http://tw.wingwit.com/Article/program/Oracle/201311/18634.html