oracle資料庫連續相同資料的統計方法

℡六兮發表於2019-01-27

今天小編就為大家分享一篇關於Oracle連續相同資料的統計,內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧。

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

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

第一種寫法row_number():

  1. SELECT val,COUNT(*) FROM
  2. (SELECT ID,val,
  3. row_number() OVER(ORDER BY ID)-row_number() OVER(PARTITION BY val ORDER BY ID) x
  4. FROM LCY ) GROUP BY val,x ORDER BY MIN(ID);

第二種rank()

  1. SELECT val,COUNT(*) FROM
  2. (SELECT ID,val,
  3. rank() OVER(ORDER BY ID)-rank() OVER(PARTITION BY val ORDER BY ID) x
  4. FROM LCY) GROUP BY val,x ORDER BY MIN(ID);

第三種dense_rank()

  1. SELECT val,COUNT(*) FROM
  2. (SELECT ID,val,
  3. dense_rank() OVER(ORDER BY ID)-dense_rank() OVER(PARTITION BY val ORDER BY ID) x
  4. 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方式進行資料統計,即各個維度均需統計

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,

相關文章