1. 程式人生 > 資料庫 >Oracle連續相同資料的統計

Oracle連續相同資料的統計

有些事情始終是需要堅持下去的。。。

今天覆習一下之前用到的連續相同資料的統計。

首先,建立一個簡單的測試表,這裡過程就略過了,直接上表(真的是以簡單為主,哈哈…)

第一種寫法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,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,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);

結果:

三者在這裡的用法只是換湯不換藥,但是在其他的需求裡還是有區別的,比如成績排名。

本章涉及到的知識點是分析函式、聚合函式,除此之外還有資料分析函式和統計求和函式。

簡單介紹一下:

聚合函式

  • SUM :該函式計算組中表達式的累積和
  • MIN :在一個組中的資料視窗中查詢表示式的最小值
  • MAX :在一個組中的資料視窗中查詢表示式的最大值
  • AVG :用於計算一個組和資料視窗內表示式的平均值。
  • COUNT :對一組內發生的事情進行累積計數

分析函式

  • RANK :根據ORDER BY子句中表達式的值,從查詢返回的每一行,計算它們與其它行的相對位置
  • DENSE_RANK :根據ORDER BY子句中表達式的值,從查詢返回的每一行,計算它們與其它行的相對位置
  • FIRST :從DENSE_RANK返回的集合中取出排在最前面的一個值的行
  • LAST :從DENSE_RANK返回的集合中取出排在最後面的一個值的行
  • FIRST_VALUE :返回組中資料視窗的第一個值
  • LAST_VALUE :返回組中資料視窗的最後一個值。
  • LAG :可以訪問結果集中的其它行而不用進行自連線
  • LEAD :LEAD與LAG相反,LEAD可以訪問組中當前行之後的行
  • ROW_NUMBER:返回有序組中一行的偏移量,從而可用於按特定標準排序的行號

資料分析函式

  • STDDEV :計算當前行關於組的標準偏離
  • STDDEV_POP:該函式計算總體標準偏離,並返回總體變數的平方根
  • STDDEV_SAMP:該函式計算累積樣本標準偏離,並返回總體變數的平方根
  • VAR_POP :該函式返回非空集合的總體變數(忽略null)
  • VAR_SAMP :該函式返回非空集合的樣本變數(忽略null)
  • VARIANCE :如果表示式中行數為1,則返回0,如果表示式中行數大於1,則返回VAR_SAMP
  • COVAR_POP :返回一對錶達式的總體協方差
  • COVAR_SAMP:返回一對錶達式的樣本協方差
  • CORR :返回一對錶達式的相關係數
  • CUME_DIST :計算一行在組中的相對位置
  • NTILE :將一個組分為"表示式"的散列表示
  • PERCENT_RANK:和CUME_DIST(累積分配)函式類似
  • PERCENTILE_DISC:返回一個與輸入的分佈百分比值相對應的資料值
  • PERCENTILE_CONT:返回一個與輸入的分佈百分比值相對應的資料值
  • RATIO_TO_REPORT:該函式計算expression/(sum(expression))的值,它給出相對於總數的百分比
  • REGR_ (Linear Regression) Functions:這些線性迴歸函式適合最小二乘法迴歸線,有9個不同的迴歸函式可使用

統計求和函式

CUBE :按照OLAP的CUBE方式進行資料統計,即各個維度均需統計

下一篇文章介紹三者的區別,還有其他一些常用的分析函式和聚合函式。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。如果你想了解更多相關內容請檢視下面相關連結