日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Oracle分组函数

發(fā)布時(shí)間:2024/9/27 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle分组函数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SQL> --avg,count,max,min,sum舉例
SQL> --統(tǒng)計(jì)員工個(gè)數(shù)
SQL> select count(*) from emp;

? COUNT(*)?????????????????????????????????????????????????????????????????????????????????????????????????????????????
----------?????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????? 15?????????????????????????????????????????????????????????????????????????????????????????????????????????????

SQL> --求平均工資,最高工資,最低工資,工資總額
SQL> select avg(sal) 平均工資,max(sal) 最高工資,min(sal) 最低工資,sum(sal) 工資總額
? 2? from emp;

? 平均工資?? 最高工資?? 最低工資?? 工資總額????????????????????????????????????????????????????????????????????????????
---------- ---------- ---------- ----------????????????????????????????????????????????????????????????????????????????
2073.21429?????? 5000??????? 800????? 29025????????????????????????????????????????????????????????????????????????????

SQL> select count(*), count(empno),count(comm) from emp;

? COUNT(*) COUNT(EMPNO) COUNT(COMM)????????????????????????????????????????????????????????????????????????????????????
---------- ------------ -----------????????????????????????????????????????????????????????????????????????????????????
??????? 15?????????? 15?????????? 4????????????????????????????????????????????????????????????????????????????????????

SQL> --分組函數(shù)會(huì)自動(dòng)去掉結(jié)果集中的null值,然后在做計(jì)算
SQL> --分組數(shù)據(jù): group by
SQL> --求每個(gè)部門的員工數(shù)
SQL> select deptno,count(*)
? 2? from emp
? 3? group by deptno;

??? DEPTNO?? COUNT(*)??????????????????????????????????????????????????????????????????????????????????????????????????
---------- ----------??????????????????????????????????????????????????????????????????????????????????????????????????
??????? 30????????? 6??????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????? 1??????????????????????????????????????????????????????????????????????????????????????????????????
??????? 20????????? 5??????????????????????????????????????????????????????????????????????????????????????????????????
??????? 10????????? 3??????????????????????????????????????????????????????????????????????????????????????????????????

SQL> select * from emp;

???? EMPNO ENAME????? JOB????????????? MGR HIREDATE???????? SAL?????? COMM???? DEPTNO??????????????????????????????????
---------- ---------- --------- ---------- -------------- ----- ---------- ----------??????????????????????????????????
????? 7369 SMITH????? CLERK?????????? 7902 17-12月-80?????? 800??????????????????? 20??????????????????????????????????
????? 7499 ALLEN????? SALESMAN??????? 7698 20-2月 -81????? 1600??????? 300???????? 30??????????????????????????????????
????? 7521 WARD?????? SALESMAN??????? 7698 22-2月 -81????? 1250??????? 500???????? 30??????????????????????????????????
????? 7566 JONES????? MANAGER???????? 7839 02-4月 -81????? 2975??????????????????? 20??????????????????????????????????
????? 7654 MARTIN???? SALESMAN??????? 7698 28-9月 -81????? 1250?????? 1400???????? 30??????????????????????????????????
????? 7698 BLAKE????? MANAGER???????? 7839 01-5月 -81????? 2850??????????????????? 30??????????????????????????????????
????? 7782 CLARK????? MANAGER???????? 7839 09-6月 -81????? 2450??????????????????? 10??????????????????????????????????
????? 7788 SCOTT????? ANALYST???????? 7566 13-7月 -87????? 3000??????????????????? 20??????????????????????????????????
????? 7839 KING?????? PRESIDENT??????????? 17-11月-81????? 5000??????????????????? 10??????????????????????????????????
????? 7844 TURNER???? SALESMAN??????? 7698 08-9月 -81????? 1500????????? 0???????? 30??????????????????????????????????
????? 7876 ADAMS????? CLERK?????????? 7788 13-7月 -87????? 1100??????????????????? 20??????????????????????????????????

???? EMPNO ENAME????? JOB????????????? MGR HIREDATE???????? SAL?????? COMM???? DEPTNO??????????????????????????????????
---------- ---------- --------- ---------- -------------- ----- ---------- ----------??????????????????????????????????
????? 7900 JAMES????? CLERK?????????? 7698 03-12月-81?????? 950??????????????????? 30??????????????????????????????????
????? 7902 FORD?????? ANALYST???????? 7566 03-12月-81????? 3000??????????????????? 20??????????????????????????????????
????? 7934 MILLER???? CLERK?????????? 7782 23-1月 -82????? 1300??????????????????? 10??????????????????????????????????
????? 1234 Tom_123?????????????????????????????????????????????????????????????????????????????????????????????????????

已選擇15行。

SQL> delete from emp where empno=1234;

已刪除 1 行。

SQL> commit;

提交完成。

SQL> select deptno,count(*)
? 2? from emp
? 3? group by deptno;

??? DEPTNO?? COUNT(*)??????????????????????????????????????????????????????????????????????????????????????????????????
---------- ----------??????????????????????????????????????????????????????????????????????????????????????????????????
??????? 30????????? 6??????????????????????????????????????????????????????????????????????????????????????????????????
??????? 20????????? 5??????????????????????????????????????????????????????????????????????????????????????????????????
??????? 10????????? 3??????????????????????????????????????????????????????????????????????????????????????????????????

SQL> ed
已寫入 file afiedt.buf

? 1? select deptno,count(*)
? 2? from emp
? 3? group by deptno
? 4* order by 1
SQL> /

??? DEPTNO?? COUNT(*)??????????????????????????????????????????????????????????????????????????????????????????????????
---------- ----------??????????????????????????????????????????????????????????????????????????????????????????????????
??????? 10????????? 3??????????????????????????????????????????????????????????????????????????????????????????????????
??????? 20????????? 5??????????????????????????????????????????????????????????????????????????????????????????????????
??????? 30????????? 6??????????????????????????????????????????????????????????????????????????????????????????????????

SQL> --group by作用于多列
SQL> --統(tǒng)計(jì)各部門員工的人數(shù),要求不各部門按工種統(tǒng)計(jì)
SQL> select deptno,job,count(*)
? 2? from emp
? 3? group by deptno,job;

??? DEPTNO JOB???????? COUNT(*)????????????????????????????????????????????????????????????????????????????????????????
---------- --------- ----------????????????????????????????????????????????????????????????????????????????????????????
??????? 20 CLERK????????????? 2????????????????????????????????????????????????????????????????????????????????????????
??????? 30 SALESMAN?????????? 4????????????????????????????????????????????????????????????????????????????????????????
??????? 20 MANAGER??????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 30 CLERK????????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 10 PRESIDENT????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 30 MANAGER??????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 10 CLERK????????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 10 MANAGER??????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 20 ANALYST??????????? 2????????????????????????????????????????????????????????????????????????????????????????

已選擇9行。

SQL> ed
已寫入 file afiedt.buf

? 1? select deptno,job,count(*)
? 2? from emp
? 3? group by deptno,job
? 4* order by 1
SQL> /

??? DEPTNO JOB???????? COUNT(*)????????????????????????????????????????????????????????????????????????????????????????
---------- --------- ----------????????????????????????????????????????????????????????????????????????????????????????
??????? 10 CLERK????????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 10 MANAGER??????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 10 PRESIDENT????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 20 ANALYST??????????? 2????????????????????????????????????????????????????????????????????????????????????????
??????? 20 CLERK????????????? 2????????????????????????????????????????????????????????????????????????????????????????
??????? 20 MANAGER??????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 30 CLERK????????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 30 MANAGER??????????? 1????????????????????????????????????????????????????????????????????????????????????????
??????? 30 SALESMAN?????????? 4????????????????????????????????????????????????????????????????????????????????????????

已選擇9行。

SQL> ed
已寫入 file afiedt.buf

? 1? select deptno,job,count(*)
? 2? from emp
? 3? group by deptno
? 4* order by 1
SQL> /
select deptno,job,count(*)
????????????? *
第 1 行出現(xiàn)錯(cuò)誤:
ORA-00979: 不是 GROUP BY 表達(dá)式


SQL> --查詢部門人數(shù)大于3的部門
SQL> select deptno, count(*)
? 2? from emp
? 3? group by deptno
? 4? having count(*)>3;

??? DEPTNO?? COUNT(*)??????????????????????????????????????????????????????????????????????????????????????????????????
---------- ----------??????????????????????????????????????????????????????????????????????????????????????????????????
??????? 30????????? 6??????????????????????????????????????????????????????????????????????????????????????????????????
??????? 20????????? 5??????????????????????????????????????????????????????????????????????????????????????????????????

SQL> --having: 在分組的基礎(chǔ)上,再對(duì)結(jié)果集進(jìn)行篩選
SQL> --group by的增強(qiáng):
SQL> --語(yǔ)法格式: group by rollup(a,b)
SQL> /*
SQL> group by rollup(deptno,job)
SQL> 等同于:
SQL> group by deptno,job
SQL> +
SQL> group by deptno
SQL> +
SQL> group by null*/
SQL>
SQL> select deptno,job,sum(sal)
? 2? from emp
? 3? group by rollup(deptno,job);

??? DEPTNO JOB???????? SUM(SAL)????????????????????????????????????????????????????????????????????????????????????????
---------- --------- ----------????????????????????????????????????????????????????????????????????????????????????????
??????? 10 CLERK?????????? 1300????????????????????????????????????????????????????????????????????????????????????????
??????? 10 MANAGER???????? 2450????????????????????????????????????????????????????????????????????????????????????????
??????? 10 PRESIDENT?????? 5000????????????????????????????????????????????????????????????????????????????????????????
??????? 10???????????????? 8750????????????????????????????????????????????????????????????????????????????????????????
??????? 20 CLERK?????????? 1900????????????????????????????????????????????????????????????????????????????????????????
??????? 20 ANALYST???????? 6000????????????????????????????????????????????????????????????????????????????????????????
??????? 20 MANAGER???????? 2975????????????????????????????????????????????????????????????????????????????????????????
??????? 20??????????????? 10875????????????????????????????????????????????????????????????????????????????????????????
??????? 30 CLERK??????????? 950????????????????????????????????????????????????????????????????????????????????????????
??????? 30 MANAGER???????? 2850????????????????????????????????????????????????????????????????????????????????????????
??????? 30 SALESMAN??????? 5600????????????????????????????????????????????????????????????????????????????????????????

??? DEPTNO JOB???????? SUM(SAL)????????????????????????????????????????????????????????????????????????????????????????
---------- --------- ----------????????????????????????????????????????????????????????????????????????????????????????
??????? 30???????????????? 9400????????????????????????????????????????????????????????????????????????????????????????
????????????????????????? 29025????????????????????????????????????????????????????????????????????????????????????????

已選擇13行。

SQL> break on deptno skip 2
SQL> --break on deptno:不同的部門號(hào)才顯示
SQL> --skip 2:不同的部門號(hào)之間空兩行
SQL> /

??? DEPTNO JOB???????? SUM(SAL)????????????????????????????????????????????????????????????????????????????????????????
---------- --------- ----------????????????????????????????????????????????????????????????????????????????????????????
??????? 10 CLERK?????????? 1300????????????????????????????????????????????????????????????????????????????????????????
?????????? MANAGER???????? 2450????????????????????????????????????????????????????????????????????????????????????????
?????????? PRESIDENT?????? 5000????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????? 8750????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????? 20 CLERK?????????? 1900????????????????????????????????????????????????????????????????????????????????????????
?????????? ANALYST???????? 6000????????????????????????????????????????????????????????????????????????????????????????
?????????? MANAGER???????? 2975????????????????????????????????????????????????????????????????????????????????????????
????????????????????????? 10875????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??? DEPTNO JOB???????? SUM(SAL)????????????????????????????????????????????????????????????????????????????????????????
---------- --------- ----------????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????? 30 CLERK??????????? 950????????????????????????????????????????????????????????????????????????????????????????
?????????? MANAGER???????? 2850????????????????????????????????????????????????????????????????????????????????????????
?????????? SALESMAN??????? 5600????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????? 9400????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????? 29025????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

已選擇13行。

SQL> spool off

總結(jié)

以上是生活随笔為你收集整理的Oracle分组函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。