A. oracle編寫存儲過程計算一個月的數據
假如你的表是table (trx_date date, value number);
select trx_date,value-lead(value) over (order by trx_date desc) from table.
這樣就可以了。
B. 資料庫軟體的Oracle
Oracle來歷
70年代 一間名為Ampex的軟體公司,正為中央情報局設計一套名叫Oracle的資料庫,Ellison是程序員之一。Oracle是世界領先的信息管理軟體開發商,因其復雜的關系資料庫產品而聞名。Oracle資料庫產品為財富排行榜上的前1000家公司所採用,許多大型網站、銀行、證券、電信等都選用了Oracle系統。
1977年艾利森與女上司Robert Miner創立「軟體開發實驗室」(Software Development Labs),當時IBM發表「關系資料庫」的論文,艾利森以此造出新資料庫,名為甲骨文。
1978年公司遷往矽谷,更名為「關系式軟體公司」 (RSI),兩年後,共有8名員工,年收入少於100萬美金。最先提出「關系資料庫」的IBM採用RSI的資料庫。1982年再更名為甲骨文(Oracle)。
1984年三年內,先後進軍加拿大、荷蘭、英國、奧地利、日本、德國、瑞士、瑞典、澳大利亞、芬蘭、法國、香港、挪威、西班牙。1986年上市時,年收入暴升至5500萬美元,同年3月招股,集資3150萬美元。1987年年收入達到 1.31 億美元,甲骨文一年後成為世界第四大軟體公司。兩年內再進軍墨西哥、巴西、中國、塞普勒斯、馬來西亞、新加坡及紐西蘭。一年後,收入再升一倍至2.82億美元。1990年甲骨文兩年內揮軍進入智利、希臘、韓國、葡萄牙、土耳其、委內瑞拉、台灣、比利時、阿根廷、哥倫比亞、哥斯大黎加及菲律賓等地,但是當年甲骨文的業績首次發生虧損,市值急跌80%,艾利森首次安排資深管理人員參與經營。
1992年旗艦產品Oracle 7面世,使該公司業務重新步上軌道,年收入達到11.79億美元。曾被視為甲骨文接班人、但後來被踼出局的Raymond Lane擔任營運總監。1995年艾利森宣布PC已死,把全數產品推向互聯網發展,並另組「網路計算機公司」(Network Computer),銷售「網路計算機」,最終被淘汰收場。2000年科網接近尾聲時,推出E-Business Suite,搶占應用產品市場,與昔日的生意夥伴構成嚴重利益沖突。同期微軟及IBM數據技術提升,此後Oracle新增訂單數目的佔有率,在兩年內下跌6.6%,業務倒退10%。2003年敵意收購仁科軟體公司,引起業界哄動。兩公司的爭議新聞層出不窮。同年美國司法部落案阻止甲骨文收購。 2009年4月20日,甲骨文公司宣布將以每股9.50美元,總計74億美金收購太陽計算機系統公司。
Oracle發展歷程
Oracle在1979年的夏季發布了可用於DEC公司的PDP-11計算機上的商用ORACLE產品,這個資料庫產品整合了比較完整的SQL實現,其中包括子查詢、連接及其他特性。但不得不說,軟體不是很穩定,並缺少事務處理這樣的重要功能。出於市場策略,公司宣稱這是該產品的第二版,但卻是實際上的第一版。之所以被命名為第2版而不是第1版,是因為Ellison認為潛在的客戶更願意購買第2個版本,而不是初始版本。(雖然這樣做有些不太誠實,還是要承認這是個十分高明的技巧。還有一些公司把自己賣給客戶的版本叫做1.0 ,學學1979年的ORACLE吧!)多年以後的今天,ORACLE公司聲稱是他們第一個提供了第一個SQL關系型資料庫管理系統。
1983年3月,發布了ORACLE第三版。Miner和Scott歷盡艱辛用C語言重新寫就這一版本。C語言當時推出不久,用它來寫ORACLE軟體也是具有一定的風險的,但除此之外,別無他法。很快就證明了這樣做是多麼的正確:C編譯器便宜而又有效,還有很好的移植性。從現在起,ORACLE產品有了一個關鍵的特性:[可移植性]。ORACLE第三版還推出了SQL語句和事務處理的「原子性」--SQL語句要麼全部成功,要麼全部失敗,事務處理要麼全部提交,要麼全部回滾。ORACLE第3版還引入了非阻塞查詢,使用存儲在Before Image File中的數據來查詢和回滾事務,從而避免了讀鎖定(read lock)的使用(雖然通過使用表級鎖定限制了它的吞吐量)。同樣是1983年,IBM發布了姍姍來遲的Database 2(DB2),但只可在MVS上使用。不管怎麼說,ORACLE已經佔取了先機。 在開發第三版還沒有結束的時候,Scott離開了ORACLE。當時用C語言改寫ORACLE的壓力很大,無休止的軟體調試終於讓Scott不堪重負,選擇了一走了之。把剩下的重擔交給了Miner一個人。在出售了自己的4%的股票之後,Scott 後來創建了Gupta公司(現更名為Centura Software)和PointBase公司(提供百分之百純Java嵌入式資料庫),都是開發和資料庫相關的產品。多年後有人問到他的4%的ORACLE股票的時候,Scott,這個曾經給ORACLE寫出第一行代碼的技術高手,也只能報以一笑了。如果能堅持下來,那是一筆幾億美金的財富。不過當時的Scott沒有那麼多的想法,他只是太累了。
1984年10月,ORACLE發布了第四版產品。產品的穩定性總算得到了得到了一定的增強,用Miner的話說,達到了「工業強度」。但是還不夠令人滿意,用戶對產品的抱怨似乎永無休止。這一版增加了讀一致性(Read Consistency),這是資料庫的一個關鍵特性,可以確保用戶在查詢期間看到一致的數據。也就是說,當一個會話正在修改數據時,其他的會話將看不到該會話未提交的修改。可以看到,在ORACLE第四版之前,產品始終是不穩定的,但是ORACLE的這群銷售人員,主要是Ellison,他在宣傳ORACLE的時候總是要誇大其詞,但他就是有能力把軟體賣出去,而且,還賣得很好,不得不承認,這的確有些神奇。讓我們看看1984年軟體市場的情形,在資料庫市場上的霸主是Asnton-Tale公司,他們的拳頭產品是剛推出不久的dBase III(確切的說dBase是PC上的資料庫軟體霸主),剛剛成為全球第三大的獨立軟體公司(第一和第二分別是微軟、Lotus,ORACLE在當時還排不上號),這一年,也是蘋果公司Macintosh誕生的年度,Steven Jobs用這個拳頭產品挑戰老大哥IBM。同樣在這一年中,ORACLE公司的開發人員剛剛把產品移植到PC上。這是最好的年代,也是最壞的年代。數以千計的小公司在軟體領域里爭斗不休,新公司如雨後春筍般成立,ORACLE如何才能於不敗之地?
在1985年,ORACLE發布了5.0版。有用戶說,這個版本算得上是ORACLE資料庫的穩定版本。這也是首批可以在Client/Server模式下運行的的RDBMS產品,在技術趨勢上,ORACLE資料庫始終沒有落後。這意味著運行在桌面PC機(客戶機)上的商務應用程序能夠通過網路訪問資料庫伺服器。1986年發布的5.1版還支持分布式查詢,允許通過一次性查詢訪問存儲在多個位置的數據。
1988年發布第6版,由於過去的版本在性能上屢受詬病,Miner帶領著工程師對資料庫核心進行了重新的改寫。引入了行級鎖(row-level locking)這個重要的特性,也就是說,執行寫入的事務處理只鎖定受影響的行,而不是整個表。這個版本引入了還算不上完善的PL/SQL(Proceral Language extension to SQL)語言。第6版還引入了聯機熱備份功能,使資料庫能夠在使用過程中創建聯機的備份,這極大地增強了可用性。同時在這一年,ORACLE開始研發ERP軟體。
1997年,Oracle推出了面向網路計算的資料庫Oracle8
1999年,Oracle正式提供世界上第一個Internet資料庫Oracle8i。
2001年6月,Oracle又推出了新一代Internet電子商務基礎架構Oracle9i。
2004年,Oracle發布oralce10g。
2007年7月12日,甲骨文公司在美國紐約宣布推出資料庫Oracle 11g,。
2013年7月8日,最新一代的全球領先的資料庫Oracle Database 12c全面上市,這是Oracle資料庫的最新版本。
C. oracle中pl/sql可以寫股票策略嗎
oracle中pl/sql可以寫股票策略嗎
declare
i number(5) := 0;
sumNum number(5) := 0;
begin
loop
sumNum := sumNum + i;
i++;
if i>100 exit;
end loop;
D. 請教Oracle計算同比和環比sql語句
首先明確概念:
環比增長率=(本期數-上期數)/上期數*100%反映本期比上期增長了多少。
同比增長率=(本期數-同期數)/同期數*100%指和去年同期相比較的增長率。
數據表名:d_temp_data
查詢數據如下:
查詢的sql語句如下:
selecta.*,
nvl(round(money/lag(money)over(orderbyid)*100,2),'0')||'%'"同比",
nvl(round(money/lag(money)over(partitionbymonorderbyid)*100,2),'0')||'%'"環比"
fromd_temp_dataa
idinameyearmonmoney同比環比
----------------------------------------------------------------------
1 1 飛馬股 2013 01 300 0% 0%
2 2 飛馬股 2013 02 270 90% 0%
3 3 飛馬股 2013 03 350 129.63% 0%
4 4 飛馬股 2013 04 180 51.43% 0%
5 5 飛馬股 2013 05 500 277.78% 0%
6 6 飛馬股 2013 06 400 80% 0%
7 7 飛馬股 2014 01 210 52.5% 70%
8 8 飛馬股 2014 02 240 114.29% 88.89%
9 9 飛馬股 2014 03 320 133.33% 91.43%
10 10 飛馬股 2014 04 480 150% 266.67%
11 11 飛馬股 2014 05 400 83.33% 80%
E. oracle的發展歷史是怎樣的
1977年6月,Larry Ellison與Bob Miner和Ed Oates在矽谷共同創辦了一家名為軟體開發實驗室(Software Development Laboratories,SDL)的計算機公司(ORACLE公司的前身)。那個時候,32歲的Larry Ellison,這個讀了三家大學都沒能畢業的輟學生,還只是一個普通的軟體工程師。公司創立之初,Miner是總裁,Oates為副總裁,而Ellison,因為一個合同的事情,還在另一家公司上班。沒多久,第一位員工Bruce Scott(用過ORACLE資料庫軟體的人都知道有個Scott用戶的吧?沒錯,就是這個Scott,至於Scott用戶的密碼Tiger,那是Scott養的貓的名字, Oracle也一直沒有忘記她的第一位程序員)加盟進來,在Miner和Oates有些厭倦了那種合同式的開發工作後,他們決定開發通用軟體,不過們還不知道自己能開發出來什麼樣的產品。Oates最先看到了埃德加 考特的那篇著名的論文連同其他幾篇相關的文章並推薦Ellison和Miner也閱讀一下。Ellison和Miner預見到資料庫軟體的巨大潛力(跟著IBM走,沒錯),於是,SDL開始策劃構建可商用的關系型資料庫管理系統(RDBMS)。
根據Ellison和Miner他們在前一家公司從事的一個由中央情報局投資的項目代碼,他們把這個產品命名為ORACLE。因為他們相信,ORACLE(字典里的解釋有「神諭, 預言」之意)是一切智慧的源泉。1979年,SDL更名為關系軟體有限公司(Relational Software,Inc.,RSI),畢竟「軟體開發實驗室」不太像一個大公司的名字。1983年,為了突出公司的核心產品,RSI再次更名為ORACLE。Oracle從此正式走入人們的視野。
RSI在1979年的夏季發布了可用於DEC公司的PDP-11計算機上的商用ORACLE產品,這個資料庫產品整合了比較完整的SQL實現,其中包括子查詢、連接及其他特性。出於市場策略,公司宣稱這是該產品的第二版,但卻是實際上的第一版。這就是Oracle這種「要命」的市場策略,事實上,這種策略有時候也是非常成功的。
1983年3月,RSI發布了ORACLE第三版。Miner和Scott歷盡艱辛用C語言重新寫就這一版本。(說老實話,太佩服這兩個大牛了,為什麼一直沒多少媒體宣傳這兩個人呢,懷疑Miner簡直就是「少林老僧」般的人物。)要知道,C語言當時推出不久,用它來寫ORACLE軟體也是具有一定的風險的,但除此之外,別無他法。很快就證明了這樣做是多麼的正確:C編譯器便宜而又有效,還有很好的移植性。從現在起,ORACLE產品有了一個關鍵的特性:[可移植性]。同樣是1983年,IBM發布了姍姍來遲的Database 2(DB2),但只可在MVS上使用。不管怎麼說,ORACLE已經佔取了先機。
在開發第三版還沒有結束的時候,Scott離開了ORACLE。當時用C語言改寫ORACLE的壓力很大,無休止的軟體調試終於讓Scott不堪重負,選擇了一走了之。把剩下的重擔交給了Miner一個人。在出售了自己的%4的股票之後,Scott 後來創建了Gupta公司(現更名為Centura Software)和PointBase公司(提供百分之百純Java嵌入式資料庫),都是開發和資料庫相關的產品。多年後有人問到他的%4的ORACLE股票的時候,Scott,這個曾經給ORACLE寫出第一行代碼的技術高手,也只能報以一笑了。如果能堅持下來,那是一筆幾億美金的財富。不過當時的Scott沒有那麼多的想法,他只是太累了。
很長一段時間里,公司研發由Miner獨力承擔。Miner視金錢如無物,為人低調,和Ellison的鋒芒必露形成鮮明的對比。在公司里,大家一致認為他是老好人,他也深受員工愛戴。Ellison是公司的大腦,Miner則當之無愧的成為公司的心臟。他是個沉默的英雄,正如Steve Jobs背後的Steve Wozniak一樣。
1984年10月,ORACLE發布了第4版產品。產品的穩定性總算得到了得到了一定的增強,用Miner的話說,達到了「工業強度」。
在1985年,ORACLE發布了5.0版。有用戶說,這個版本算得上是ORACLE資料庫的穩定版本。這也是首批可以在Client/Server模式下運行的的RDBMS產品,在技術趨勢上,ORACLE資料庫始終沒有落後。
那是在1985年,當時曾經的最大的獨立軟體公司Cullinet(主要銷售網狀資料庫)已經如流星般隕落。ORACLE的主要競爭對手是Ingres資料庫。Ingres在加州大學伯克利分校誕生,主要的設計者是當時鼎鼎大名的Michael Stonebraker教授。可以說Ingres資料庫軟體是上個世紀80年代技術上最好的資料庫,Ingres市場分額的快速增長已經給ORACLE早成了很大的壓力。巧的是,這個時候,IBM公司再一次伸出「上帝之手」。
Ingres使用的是Stonebraker 發明的QUEL(Query Language))的查詢技術,這和IBM的SQL大不相同。在某些地方QUEL甚至要優於SQL。IBM當時擔心Ingres把QUEL變成標准會對自己不利。經過一番衡量,決定把自己的SQL提交給資料庫標准委員會。而Stonebraker教授可不打算把QUEL提交給資料庫標准委員會,學院派的他認為這麽做實際上是扼殺了創新精神。可以看出,學院派,大都會把事情搞雜。
1986年3月12日,ORACLE公司以每股15美元公開上市,當日以20.75美元收盤,公司市值2.7億美元。3月13日,微軟以每股21美元的發行價上市,以28美元收市,公司市值達到7億美元。遠遠超過了ORACLE。成功的光環的微軟和蓋茨遮蓋住了ORACLE和Ellison的光芒,可能這也是Ellison敵視微軟的開始。
ORACLE第6版於1988年發布。由於過去的版本在性能上屢受詬病,Miner帶領著工程師對資料庫核心進行了重新的改寫。引入了行級鎖(row-level locking)這個重要的特性,也就是說,執行寫入的事務處理只鎖定受影響的行,而不是整個表。這個版本引入了還算不上完善的PL/SQL(Proceral Language extension to SQL)語言。第6版還引入了聯機熱備份功能,使資料庫能夠在使用過程中創建聯機的備份,這極大地增強了可用性。
在第六版剛發布之後,很多迫不及待開始使用的用戶就怨聲載道。這是個根本就沒有測試好就進行發布的產品(也怪Ellison,大話總要說在前頭,只好自嘗苦果)。用戶開始對ORACLE大肆抨擊,ORACLE的一些對手也開始落井下石,針對ORACLE產品的一些弱點進行攻擊。
噩夢延續到ORACLE第七版的推出而結束。這個公司已經空談了好幾年的新版本(一度被譏諷為不過是Ellison的故計重施而已),直到1992年6月才終於閃亮登場,這一次公司吸取了第六版匆忙上市的教訓,聽取了用戶的多方面的建議,並集中力量對新版本進行了大量而細致的測試。該版本增加了許多新的性能特性:分布式事務處理功能、增強的管理功能、用於應用程序開發的新工具以及安全性方法。
ORACLE 第七版是ORACLE真正出色的產品,取得了巨大的成功。這個版本的出現真是好時機,當時Sybase公司的資料庫已經占據了不少份額,ORACLE藉助這一版本的成功,一具擊退了咄咄逼人的Sybase。公司的銷售人員這次算到了給用戶兌現空頭許諾的時候。公司經過兩三年的治理,終於擺脫了種種麻煩,重新開始健康發展,銷售額也從92年的15億美元變為四年後的42億美元。
1997年6月,ORACLE第八版發布。ORACLE8支持面向對象的開發及新的多媒體應用,這個版本也為支持Internet、網路計算等奠定了基礎。同時這一版本開始具有同時處理大量用戶和海量數據的特性。
1998年9月,ORACLE公司正式發布ORACLE 8i。「i」代表Internet,這一版本中添加了大量為支持Internet而設計的特性。這一版本為資料庫用戶提供了全方位的Java支持。ORACLE 8i成為第一個完全整合了本地Java運行時環境的資料庫,用Java就可以編寫ORACLE的存儲過程。對,Java,只要是能夠打擊微軟的武器,ORACLE都要派上用場。
在2001年6月的ORACLE OpenWorld大會中,ORACLE發布了ORACLE 9i。在ORACLE 9i的諸多新特性中,最重要的就是Real Application Clusters(RAC)了。說起ORACLE集群伺服器,早在第五版的時候,ORACLE就開始開發ORACLE並行伺服器(ORACLE Parallel Server ,OPS),並在以後的版本中逐漸的完善了其功能,不過,嚴格來說,盡管OPS算得上是個集群環境,但是並沒有體現出集群技術應有的優點。
2003年9月8日,舊金山舉辦的ORACLE World大會上,Ellison宣布下一代資料庫產品為「ORACLE 10g」。ORACLE應用伺服器10g(ORACLE Application Server 10g)也將作為甲骨文公司下一代應用基礎架構軟體集成套件。「g」代表「grid ,網格」。這一版的最大的特性就是加入了網格計算的功能。(Oracle絕對是造概念的能手,只要是能引領出新的賣點,出些新概念,也是值得的)。
最近兩年,Oracle先後又收購了People soft(103億$), BEA(80多億$),還有Sibel之類的就不說了。通過收購,實力大增。
2007年11月,Oracle 11g正式發布,功能上大大加強。11g是甲骨文公司30年來發布的最重要的資料庫版本,根據用戶的需求實現了信息生命周期管理(Information Lifecycle Management)等多項創新。大幅提高了系統性能安全性,全新的Data Guard最大化了可用性,利用全新的高級數據壓縮技術降低了數據存儲的支出,明顯縮短了應用程序測試環境部署及分析測試結果所花費的時間,增加了RFID Tag、DICOM醫學圖像、3D空間等重要數據類型的支持,加強了對Binary XML的支持和性能優化。
從Oracle的發展來看,它的市場策略直接引導著公司的發展。與別的公司有很大的不同。
F. oracle 求 合計平均值 的sql
oracle中,求平均值用avg函數。
工具:oracle 10g
步驟:
1、資料庫中有test表數據如下:
2、求出這些人的平均grade,需要用以下語句:
1
select avg(grade) 平均成績 from test;
3、結果如下:
avg函數語法:
Avg(expr)
其中 expr 代表一個字元串表達式,它或者標識一個欄位,該欄位包含要計算平均值的數據;或者標識一個表達式,它用該欄位中的數據來執行計算。 expr中的運算對象可能包括一個表欄位名,一個常數或一個函數(可能是內在的,也可能是用戶自定義的,但不是 SQL 合計函數)。