1. 程式人生 > >or,and,group by,having

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 avg(sal) from emp );

顯示工資低於平均工資的員工資訊。

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;