or,and,group by,having
1. 使用邏輯操作符進行查詢
Or \and
查詢出工資大於500,或者工作為manager並且名字的首字母為J的員工
Select *from emp where (sal>500 or job=manager) and enname like ‘J%’;(大小寫的區別)
2. order by
工資從低到高的順序排列出員工的資訊
Select * from emp order by sal desc ; 預設是從低到高 (asc) 高到低 desc
部門編號從升序,僱員的工資降序。
Select *from emp order by depot asc , sal desc;
3.採用列名查詢
查詢一下全部僱員的年薪是多少並按照降序排列
select ename ,(sal+nvl(comm,0))*12 "年薪總共" from emp order by "年薪總共";// 列名排序
4.分頁查詢(子查詢先學習)
5.複雜的查詢
在日常生活中經常用到的查詢都是一些複雜的查詢,現在學習oracle 的複雜查詢。
陣列的分組,max(最大) 、min(最小)、avg(平均)、 sum(求和) 、count(計數)
所有員工的最高工資和最低工資。
select max(sal),min(sal)from emp;
薪資最高員工的名字(子查詢)
select ename,sal from emp where sal=(select max(sal) from emp);
薪資最高員工的名字和工作
select ename, job,sal from emp where sal=(select max(sal) from emp);
計算共有多少個員工
select count (ename) “共有員工”from emp ;
計算員工的平均工資和工資總和。
select sum(sal)"總和",avg(sal)"平均" from emp;
顯示工資最高的員工的姓名,和工作崗位。
select ename,job,sal from emp where sal=(select max(sal) from emp);
顯示工資高於平均工資的員工資訊。
select *from emp where sal>(
顯示工資低於平均工資的員工資訊。
select *from emp where sal<(select avg(sal) from emp );
group by和 having
group by 對查詢的資料分組統計。
Having 用於限制分組資料的統計。
1. 查詢平均工資,並顯示最大工資,顯示最大工資在那個部門。
select avg(sal),max(sal),deptno from emp group by deptno;//按照那個分組,這個欄位不許放到前面。
顯示每個部門的平均工資和最低工資。
Select avg(sal),min(sal),deptno from emp group by deptno;
2. 顯示每個部門的每種崗位的平均工資,最高工資和大於平均工資的人。
select avg(sal),max(sal), deptno from emp group by deptno having avg(sal)>2000;
總結
1分組函式只能出現在列表中,having 、order by 子句中。
2如果在查詢語句中包含group by ,having ,order by 那麼他們的順序是group by \having\order by 順序。必須的。
顯示每個部門的每種崗位的平均工資,最高工資和大於平均工資的人。
select avg(sal),max(sal), deptno from emp group by deptno having avg(sal)>2000 order by deptno desc;\\降序排列。
3. 在選擇列中如果有列、表示式、和分組函式,那麼這些列和表示式必須有一個出現在group by 中,否則就會出錯。
select avg(sal),max(sal), deptno from emp group by deptno having avg(sal)>2000 order by deptno desc;