您好,登錄后才能下訂單哦!
函數:oracle服務器先事寫好的一段具有一定功能的程序片段,內置于oracle服務器,供用戶調用
單行函數:輸入一個參數,輸出一個結果,例如:upper('baidu.com')->BAIDU.COM
多行函數:輸入多個參數,或者是內部掃描多次,輸出一個結果,例如:count(*)->14
統計emp表中員工總人數
select count(*) from emp;
*號適用于表字段較少的情況下,如果字段較多,掃描時間多,效率低,項目中提倡使用某一個非null唯一的字段,通常是主鍵
統計公司有多少個不重復的部門
select count(distinct deptno) from emp;
統計有傭金的員工人數
select count(comm) from emp;
注意:今天講的這些多個行函數,不統計NULL值
員工總工資,平均工資,四舍五入,保留小數點后0位
select sum(sal) "總工資",round(avg(sal),0) "平均工資" from emp;
查詢員工表中最高工資,最低工資
select max(sal) "最高工資",min(sal) "最低工資" from emp;
入職最早,入職最晚員工
select max(hiredate) "最晚入職時間",min(hiredate) "最早入職時間" from emp;
多行函數:count/sum/avg/max/min
按部門求出該部門平均工資,且平均工資取整數,采用截斷
select deptno "部門編號",trunc(avg(sal),0) "部門平均工資" from emp group by deptno;
(繼續)查詢部門平均工資大于2000元的部門
select deptno "部門編號",trunc(avg(sal),0) "部門平均工資" from emp group by deptno having trunc(avg(sal),0) > 2000;
(繼續)按部門平均工資降序排列
select deptno "部門編號",trunc(avg(sal),0) "部門平均工資" from emp group by deptno having trunc(avg(sal),0) > 2000 order by 2 desc;
除10號部門外,查詢部門平均工資大于2000元的部門,方式一【having deptno<>10】
select deptno,avg(sal) from emp group by deptno having deptno<>10;
除10號部門外,查詢部門平均工資大于2000元的部門,方式二【where deptno<>10】【推薦】
select deptno,avg(sal) from emp where deptno<>10 group by deptno;
顯示部門平均工資的最大值
select max(avg(sal)) "部門平均工資的最大值" from emp group by deptno;
思考:顯示部門平均工資的最大值和該部門編號?
select max(avg(sal)) "部門平均工資的最大值",deptno "部門編號"
from emp
group by deptno;
錯誤
group by 子句的細節: 1)在select子句中出現的非多行函數的所有列,【必須】出現在group by子句中 2)在group by子句中出現的所有列,【可出現、可不現】在select子句中 where和having的區別: where: 1)行過濾器 2)針對原始的記錄 3)跟在from后面 4)where可省 5)先執行 having: 1)組過濾器 2)針對分組后的記錄 3)跟在group by后面 4)having可省 5)后執行 oracle中綜合語法: 1)select子句-----必須 2)from子句-------必須,不知寫什么表了,就寫dual 3)where子句------可選 4)group by子句---可選 5)having子句-----可選 6)order by 子句--可選,如果出現列名,別名,表達式,字段 |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。