查詢出公司每個月支出的工資總和
--查詢出公司每個月支出的工資總和 SELECT SUM(sal) FROM emp;
查詢出公司的最高工資,最低工資和平均工資
--查詢出公司的最高工資,最低工資和平均工資 SELECT MAX(sal),MIN(sal),ROUND(AVG(sal),2) FROM emp;
統計出公司最早雇傭和最晚雇傭的雇傭日期
--統計出公司最早雇傭和最晚雇傭的雇傭日期 SELECT MIN(hiredate) 最早雇傭日期 , MAX(hiredate) 最晚雇傭日期 FROM emp ;
統計公司工資之中中間的工資值
--統計公司工資之中中間的工資值 SELECT MEDIAN(sal) FROM emp ;
驗證COUNT(*)、COUNT(字段)、COUNT(DISTINCT 字段)的使用區別
--驗證COUNT(*)、COUNT(字段)、COUNT(DISTINCT 字段)的使用區別 SELECT COUNT(*) , COUNT(ename) , COUNT(comm) , COUNT(DISTINCT job) FROM emp ;
SELECT [DISTINCT] 分組字段 [AS] [列別名] ,... | 統計函數 [AS] [別名] , …. FROM 表名稱1 [表別名1] , 表名稱2 [表別名2] …. [WHERE 條件(s)] [GROUP BY 分組字段] [ORDER BY 排序字段 ASC|DESC] ;
--統計出每個部門的人數 SELECT COUNT(empno) FROM emp GROUP BY deptno;
統計出每種職位的最低、最高工資
--統計出每種職位的最低、最高工資 SELECT job,MIN(sal) 最低工資,MAX(sal) 最高工資 FROM emp GROUP BY job;
查詢出每個部門的名稱,部門人數,部門平均工資,平均服務年限
--查詢出每個部門的名稱,部門人數,部門平均工資,平均服務年限 SELECT d.dname,COUNT(e.empno),ROUND (AVG(e.sal),2),ROUND(AVG (months_between(SYSDATE,e.hiredate)/12),2) FROM emp e,dept d WHERE e.deptno(+)=d.deptno GROUP BY d.dname;
查詢出公司各個工資等級雇員的數量、平均工資。
--查詢出公司各個工資等級雇員的數量、平均工資。 SELECT s.grade,COUNT(e.empno),ROUND (AVG(e.sal),2) FROM emp e,salgrade s WHERE e.sal BETWEEN s.losal AND s.hisal GROUP BY s.grade;
統計領取傭金與不領取傭金的員工的平均工資,平均入職年限,員工人數
--統計領取傭金與不領取傭金的員工的平均工資,平均入職年限,員工人數--comm是空內容不能直接分組,用集合來完成 SELECT ROUND(AVG(e.sal),2),ROUND(AVG(months_between(SYSDATE,e.hiredate)/12),2),COUNT(e.empno) FROM emp e WHERE e.comm IS NULL UNION SELECT ROUND(AVG(e.sal),2),ROUND(AVG(months_between(SYSDATE,e.hiredate)/12),2),COUNT(e.empno) FROM emp e WHERE e.comm IS NOT NULL;
多字段分組統計
--語法 SELECT [DISTINCT] 分組字段1 [AS] [列別名] , [分組字段2 [AS] [列別名] , …] | 統計函數 [AS] [別名] , …. FROM 表名稱1 [表別名1] , 表名稱2 [表別名2] …. [WHERE 條件(s)] [GROUP BY 分組字段1 , 分組字段2 , ….] [ORDER BY 排序字段 ASC|DESC] ;現在要求查詢出每個部門的詳細信息
--現在要求查詢出每個部門的詳細信息,部門編號,部門名稱,部門位置,部門人數,平均工資,總工資,最高、最低工資 SELECT d.deptno,d.dname,d.loc,COUNT(e.empno),AVG(e.sal),SUM(sal),MAX(sal),MIN(sal) FROM dept d,emp e WHERE d.deptno=e.deptno(+) GROUP BY d.deptno,d.dname,d.loc;
SELECT [DISTINCT] 分組字段1 [AS] [列別名] , [分組字段2 [AS] [列別名] , …] | 統計函數 [AS] [別名] , …. FROM 表名稱1 [表別名1] , 表名稱2 [表別名2] …. [WHERE 條件(s)] [GROUP BY 分組字段1 , 分組字段2 , ….] [HAVING 過濾條件(s)] [ORDER BY 排序字段 ASC|DESC] ;查詢出所有平均工資大於2000的職位信息、平均工資、雇員人數
--查詢出所有平均工資大於2000的職位信息、平均工資、雇員人數 SELECT e.job,AVG(e.sal),COUNT(e.empno) FROM emp e GROUP BY e.job HAVING AVG(e.sal)>2000;列出至少有一個員工的所有部門編號、名稱,並統計出這些部門的平均工資、最低工資、最高工資。
--列出至少有一個員工的所有部門編號、名稱,並統計出這些部門的平均工資、最低工資、最高工資。 SELECT d.deptno,d.dname,AVG(e.sal) avgsal,MIN(e.sal),MAX(e.sal),COUNT(e.empno) 人數 FROM emp e,dept d WHERE e.deptno(+)=d.deptno GROUP BY d.deptno,d.dname HAVING COUNT(e.empno)>0;
顯示非銷售人員工作名稱以及從事同一工作雇員的月工資的總和,
並且要滿足從事同一工作的雇員的月工資合計大於$5000,輸出結果按月工資的合計升序排列
--顯示非銷售人員工作名稱以及從事同一工作雇員的月工資的總和, --並且要滿足從事同一工作的雇員的月工資合計大於$5000,輸出結果按月工資的合計升序排列 SELECT e.job,SUM(e.sal) sumsal FROM emp e WHERE e.job<>'SALESMAN' GROUP BY e.job HAVING SUM(e.sal)>5000 ORDER BY sumsal ASC;HAVING子句是在分組之後使用,主要是為了針對分組的結果進行過濾