oracle在日本遇到的技術問題

技術問題勉強
https://blog.csdn.net/Ruoyang666/article/details/79129000

注意這裏的(+),如果 外連接的同時,還需要有
字段等於某個條件的話,需要這樣做
比如:
FROM TABLE1, TABLE2
WHERE 
TABLE1.A = TABLE2.B(+)
AND TABLE2.C(+) = '2'


原文內容:
oracle中的(+)是一種特殊的用法,(+)表示外連接,並且總是放在非主表的一方。

例如

左外連接:select A.a,B.a from A LEFT JOIN B ON A.b=B.b;

等價於select A.a,B.a from A,B where A.b = B.b(+);

再舉個例子,這次是右外連接:select A.a,B.a from A RIGHT JOIN B ON A.b=B.b;

等價於select A.a,B.a from A,B where A.b (+) = B.b;

個人補充:

數據表的連接有:
1、內連接(自然連接): 只有兩個表相匹配的行才能在結果集中出現
2、外連接: 包括
(1)左外連接(左邊的表不加限制)
(2)右外連接(右邊的表不加限制)
(3)全外連接(左右兩表都不加限制)
3、自連接(連接發生在一張基表內)

有 (+) 的一方代表有可以爲空,即副表

oracle中的(+)是一種特殊的用法,(+)表示外連接,並且總是放在非主表的一方。例如左外連接:select A.a,B.a from A LEFT JOIN B ON A.b=B.b;等價於select A.a,B.a from A,B where A.b = B.b(+);再舉個例子,這次是右外連接:select A.a,B.a from A RIGHT JOIN B ON A.b=B.b;等價於select A.a,B.a from A,B where A.b (+) = B.b;
----------------------------------------------------------------------------------------------------------------------------------------------------------------
https://blog.csdn.net/wawmg/article/details/40840093
sum over partition by 的用法
--用法詳解

0、select * from wmg_test;     ---測試數據

 

1、select v1,v2,sum(v2) over(order by v2) as sum     --按照 v2排序,累計n+n-1+....+1

from wmg_test;

2、select v1,v2,sum(v2) over(partition by v1 order by v2) as sum     --先分組,組內在進行 1 中的操作

from wmg_test;

 

3、select v1,v2,sum(v2) over(partition by v1 order by v1) as sum   ---穩定排序

from wmg_test;

 

4、select v1,v2,sum(v2) over(partition by v1) as sum    --相同key的進行回填處理

from wmg_test;

 

5、select distinct v1,sum_01                                        --取一條

from (

select v1,sum(v2) over(partition by v1) as sum_01

from wmg_test

) a;

 

6、當然也可以逆序累加,只需order by desc 即可

總結區別:group by 和partition by的區別

group 單純分組

partition 也能分組,但還具備累計的功能
----------------------------------------------------------------------------------------------------------------------------------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章