91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java39: 數據庫三(Oracle)

發布時間:2020-06-26 10:08:09 來源:網絡 閱讀:315 作者:浪漫的偷笑 欄目:數據庫

Oracle 高級查詢

1 集合運算

    union 并集 把兩張表合成一張表

    intersect 交集 一樣的留下,不一樣的不要

    minus 減去 前面的結果減去后面的結果

create table emp3 as 
select * from emp2 where deptno=20;
create table emp4 as 
select * from emp2 where deptno=30;

alter table emp3 rename to emp20;
alter table emp4 rename to emp30;

select * from emp20;
select * from emp30;

select * from emp20 union select * from emp30;

select * from emp30 intersect select * from emp2;

select * from emp2 minus select * from emp30;


2 connect by 和start with

依托于該語法,我們可以將一個表形結構的以樹的順序列出來

提供一個偽列 level

level

找到頭
select ename from emp2 where mgr is null;
select empno,ename,mgr from emp start with ename='KING' connect by prior empno=mgr;

select level,empno,ename,mgr from emp start with ename=(select ename from emp2 where mgr is null) connect by prior empno=mgr;


select * from (select level lv,empno,ename,mgr from emp start with ename=(select ename from emp2 where mgr is null) connect by prior empno=mgr) where lv=2;


3高級分組函數


rollup 函數 小計

rollup 函數多一行 小計

對于分組的列為null

對于聚集函數為求 小計

select job,sum(sal) from emp GROUP BY rollup(job);

select job,sum(sal),round(avg(sal)),max(sal),count(empno)from emp group by rollup(job);

統計rollup(x,y) 統計第一個x 不統計y

select dname,job,sum(sal) from emp inner join dept using(deptno) group by rollup(dname,job);

cube 統計所有的列

select dname,job,sum(sal) from emp inner join dept using(deptno) froup by cube(dname,job) order by dname;

rollup 和cube 就是匯總的結果



grouping 和grouping sets 

select grouping(dname),dname ,grouping(job),job,sum(sal) from emp inner join dept using(deptno) group by rollup(dname,job) order by dname;
select * from (select grouping(dname),dname ,grouping(job) N,job,sum(sal) from emp inner join dept using(deptno) group by rollup(dname,job) order by dname) where dname='SALES' and N=1 ;
select grouping(dname),dname,grouping(job),job,sum(sal) from emp inner join dept using(deptno) group by cube(dname,job) order by dname;


只查詢匯總的行 總的匯總也不要

select dname,job,sum(sal) from emp inner join dept using(deptno) group by grouping sets(dname,job);

如果需要查詢的結果只有小計 可以用cube 和 grouping sets 用grouping sets 的效率高于cube 和rollup


排名函數

    既能排序又能排名

rank() over( orader by xx)

重復就會削去下一個編號

select rank() over(order by sal desc),ename,sal from emp;

dense_rank() over(orader by xx)

重復不削去編號

select dense_rank() over(order by sal desc),ename,sal from emp;


先排序在rownum  比rownum 簡單

select row_number() over(order by sal desc),ename from emp;









向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

康马县| 望谟县| 河曲县| 桑植县| 文成县| 乌兰县| 自贡市| 上饶县| 广德县| 工布江达县| 无锡市| 通州市| 麻栗坡县| 任丘市| 甘德县| 清丰县| 台北市| 肇东市| 林周县| 喀喇| 密山市| 蒙阴县| 合川市| 曲水县| 张家口市| 彰武县| 木兰县| 依兰县| 云林县| 工布江达县| 深水埗区| 元朗区| 神农架林区| 广丰县| 大化| 绥滨县| 安徽省| 凤凰县| 兰溪市| 永修县| 墨脱县|