Oracle連續(xù)相同數(shù)據(jù)的統(tǒng)計(jì)
有些事情始終是需要堅(jiān)持下去的。。。
今天復(fù)習(xí)一下之前用到的連續(xù)相同數(shù)據(jù)的統(tǒng)計(jì)。
首先,創(chuàng)建一個(gè)簡(jiǎn)單的測(cè)試表,這里過(guò)程就略過(guò)了,直接上表(真的是以簡(jiǎn)單為主,哈哈…)

第一種寫(xiě)法row_number():
SELECT val,COUNT(*) FROM (SELECT ID,val, row_number() OVER(ORDER BY ID)-row_number() OVER(PARTITION BY val ORDER BY ID) x FROM LCY ) GROUP BY val,x ORDER BY MIN(ID);
第二種rank():
SELECT val,COUNT(*) FROM (SELECT ID,val, rank() OVER(ORDER BY ID)-rank() OVER(PARTITION BY val ORDER BY ID) x FROM LCY) GROUP BY val,x ORDER BY MIN(ID);
第三種dense_rank():
SELECT val,COUNT(*) FROM (SELECT ID,val, dense_rank() OVER(ORDER BY ID)-dense_rank() OVER(PARTITION BY val ORDER BY ID) x FROM LCY )GROUP BY val,x ORDER BY MIN(ID);
結(jié)果:

三者在這里的用法只是換湯不換藥,但是在其他的需求里還是有區(qū)別的,比如成績(jī)排名。
本章涉及到的知識(shí)點(diǎn)是分析函數(shù)、聚合函數(shù),除此之外還有數(shù)據(jù)分析函數(shù)和統(tǒng)計(jì)求和函數(shù)。
簡(jiǎn)單介紹一下:
聚合函數(shù)
- SUM :該函數(shù)計(jì)算組中表達(dá)式的累積和
- MIN :在一個(gè)組中的數(shù)據(jù)窗口中查找表達(dá)式的最小值
- MAX :在一個(gè)組中的數(shù)據(jù)窗口中查找表達(dá)式的最大值
- AVG :用于計(jì)算一個(gè)組和數(shù)據(jù)窗口內(nèi)表達(dá)式的平均值。
- COUNT :對(duì)一組內(nèi)發(fā)生的事情進(jìn)行累積計(jì)數(shù)
分析函數(shù)
- RANK :根據(jù)ORDER BY子句中表達(dá)式的值,從查詢(xún)返回的每一行,計(jì)算它們與其它行的相對(duì)位置
- DENSE_RANK :根據(jù)ORDER BY子句中表達(dá)式的值,從查詢(xún)返回的每一行,計(jì)算它們與其它行的相對(duì)位置
- FIRST :從DENSE_RANK返回的集合中取出排在最前面的一個(gè)值的行
- LAST :從DENSE_RANK返回的集合中取出排在最后面的一個(gè)值的行
- FIRST_VALUE :返回組中數(shù)據(jù)窗口的第一個(gè)值
- LAST_VALUE :返回組中數(shù)據(jù)窗口的最后一個(gè)值。
- LAG :可以訪問(wèn)結(jié)果集中的其它行而不用進(jìn)行自連接
- LEAD :LEAD與LAG相反,LEAD可以訪問(wèn)組中當(dāng)前行之后的行
- ROW_NUMBER:返回有序組中一行的偏移量,從而可用于按特定標(biāo)準(zhǔn)排序的行號(hào)
數(shù)據(jù)分析函數(shù)
- STDDEV :計(jì)算當(dāng)前行關(guān)于組的標(biāo)準(zhǔn)偏離
- STDDEV_POP:該函數(shù)計(jì)算總體標(biāo)準(zhǔn)偏離,并返回總體變量的平方根
- STDDEV_SAMP:該函數(shù)計(jì)算累積樣本標(biāo)準(zhǔn)偏離,并返回總體變量的平方根
- VAR_POP :該函數(shù)返回非空集合的總體變量(忽略null)
- VAR_SAMP :該函數(shù)返回非空集合的樣本變量(忽略null)
- VARIANCE :如果表達(dá)式中行數(shù)為1,則返回0,如果表達(dá)式中行數(shù)大于1,則返回VAR_SAMP
- COVAR_POP :返回一對(duì)表達(dá)式的總體協(xié)方差
- COVAR_SAMP:返回一對(duì)表達(dá)式的樣本協(xié)方差
- CORR :返回一對(duì)表達(dá)式的相關(guān)系數(shù)
- CUME_DIST :計(jì)算一行在組中的相對(duì)位置
- NTILE :將一個(gè)組分為"表達(dá)式"的散列表示
- PERCENT_RANK:和CUME_DIST(累積分配)函數(shù)類(lèi)似
- PERCENTILE_DISC:返回一個(gè)與輸入的分布百分比值相對(duì)應(yīng)的數(shù)據(jù)值
- PERCENTILE_CONT:返回一個(gè)與輸入的分布百分比值相對(duì)應(yīng)的數(shù)據(jù)值
- RATIO_TO_REPORT:該函數(shù)計(jì)算expression/(sum(expression))的值,它給出相對(duì)于總數(shù)的百分比
- REGR_ (Linear Regression) Functions:這些線性回歸函數(shù)適合最小二乘法回歸線,有9個(gè)不同的回歸函數(shù)可使用
統(tǒng)計(jì)求和函數(shù)
CUBE :按照OLAP的CUBE方式進(jìn)行數(shù)據(jù)統(tǒng)計(jì),即各個(gè)維度均需統(tǒng)計(jì)
下一篇文章介紹三者的區(qū)別,還有其他一些常用的分析函數(shù)和聚合函數(shù)。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
日常收集整理oracle trunc 函數(shù)處理日期格式(很實(shí)用)
關(guān)于oracle trunc函數(shù)小編日常收集整理了些,下面把oracle trunc 函數(shù)處理日期格式的相關(guān)介紹分享給大家,感興趣的朋友參考下2015-10-10
Oracle表空間時(shí)間點(diǎn)恢復(fù)的方法
Oracle表空間是數(shù)據(jù)庫(kù)管理系統(tǒng)中用于存儲(chǔ)數(shù)據(jù)、索引和其他對(duì)象的基本存儲(chǔ)單元,它是Oracle Database結(jié)構(gòu)的核心組成部分,將物理磁盤(pán)空間組織成邏輯上獨(dú)立的區(qū)域,本文給大家介紹了Oracle表空間時(shí)間點(diǎn)恢復(fù)的方法,需要的朋友可以參考下2024-10-10
Oracle用戶(hù)連續(xù)登錄失敗次數(shù)限制如何取消
三步驟輕松實(shí)現(xiàn)Oracle取消用戶(hù)連續(xù)登錄失敗次數(shù)限制,用戶(hù)連續(xù)登錄失敗次數(shù)最大限制時(shí),Oracle就會(huì)鎖定該用戶(hù),如何破解這個(gè)限制,下面為大家介紹,感興趣的小伙伴們可以參考一下2016-05-05
pl/sql連接遠(yuǎn)程oracle服務(wù)器的配置教程
這篇文章主要為大家詳細(xì)介紹了pl/sql連接遠(yuǎn)程oracle服務(wù)器的配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07

