国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

理解數(shù)據(jù)庫的統(tǒng)計(jì)集聚函數(shù)

2024-07-21 02:34:40
字體:
供稿:網(wǎng)友

  為了選用正確的函數(shù),你必須具體地了解現(xiàn)在Oracle SQL中用到的一系列集聚函數(shù)。Oracle8和Oracle9都支持的函數(shù)包括:
  
   
  
  
  AVG
  CORR
  COUNT
  COVAR_POP
  COVAR_SAMP
  MAX
  MIN
  REGR_
  STDDEV
  STDDEV_POP
  STDDEV_SAMP
  SUM
  VAR_POP
  VAR_SAMP
  VARIANCE
   
  幾乎所有的集聚函數(shù)都將忽略那些NULL列。但是有一個(gè)例外,那就是COUNT(*),這個(gè)函數(shù)將計(jì)算所有的紀(jì)錄而不管是否存在NULL列。在一般集聚函數(shù)所有數(shù)據(jù)都為NULL時(shí),集聚函數(shù)的返回值為NULL,但是COUNT(col)的返回值為零。
  
  MIN函數(shù)和MAX函數(shù)
  MIN函數(shù)和MAX函數(shù)根據(jù)排序后返回最小值和最大值。你應(yīng)該明白那些函數(shù)都是基于對它們的數(shù)據(jù)類型的排序結(jié)果。為了避免排序錯(cuò)誤,日期和數(shù)字都必須定義為與其對應(yīng)的數(shù)據(jù)類型。例如,MAX(TO_CHAR(date))會(huì)把1月排在2月之前。
  
  STDDEV,STDDEV_POP,STDDEV_SAMP和VARIANCE,VAR_POP,VAR_SAMP
  
  標(biāo)準(zhǔn)差和方差是衡量數(shù)據(jù)擴(kuò)散范圍的標(biāo)準(zhǔn)。假如一列中的數(shù)據(jù)都相同的話,那么標(biāo)準(zhǔn)差和方差就為零。在實(shí)際情況中,標(biāo)準(zhǔn)差描述的是反映平均值的一個(gè)錐形曲線。對于現(xiàn)實(shí)世界人口,有68%的數(shù)據(jù)應(yīng)在一個(gè)標(biāo)準(zhǔn)差之內(nèi),96%的數(shù)據(jù)應(yīng)在2個(gè)標(biāo)準(zhǔn)差之內(nèi)。
  
  據(jù)統(tǒng)計(jì)表明:人口的樣本方差并不能很好的反映整體人口的方差,這個(gè)事實(shí)就決定了存在3個(gè)標(biāo)準(zhǔn)差函數(shù)和3個(gè)方差函數(shù)。通過以下的SQL腳本來看看它的作用:
  
  drop table agg;
  create table agg(n integer);
  begin
    for i in 0..1000 loop
      insert into agg values(i);
    end loop;
  end;
  /
  show errors;
  select 'Population' d,count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)
   from agg
  union
  select 'Sample',count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)
   from agg where mod(n,2) = 0
  union
  select 'Sample',count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)
   from agg where mod(n,10) = 0
  union
  select 'Sample',count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)
   from agg where mod(n,100) = 0;
  得到的結(jié)果是
  理解數(shù)據(jù)庫的統(tǒng)計(jì)集聚函數(shù)
  雖然這些數(shù)據(jù)是人為計(jì)算得到的,并沒有在此錐形曲線上,但是這個(gè)例子反映了_SAMP和_POP的差別。從這個(gè)例子看出,樣本的STDDEV_POP(N)列的數(shù)據(jù)比樣本的STDDE(N)列數(shù)據(jù)更接近實(shí)際的STDDECV(N)列數(shù)據(jù)。
  
  因此,當(dāng)你應(yīng)用STDDEV函數(shù)時(shí),認(rèn)真考慮你處理的是什么數(shù)據(jù)是非常重要的。假如你想得到一些數(shù)據(jù)的真實(shí)標(biāo)準(zhǔn)差,那么你就應(yīng)該用STDDEV_SAMP。假如你只是處理一些小型的抽樣樣本,只希望得到人口標(biāo)準(zhǔn)差的近似值的話,那么你應(yīng)該用STDDEV_POP。
  
  VAR_SAMP就是STDDEV_SAMP的平方,相似的VAR_POP就是STDDEV_POP的平方。這兩個(gè)函數(shù)并不常用,原因是他們的成員都是帶平方的。
  
  COVAR_POP 和 COVAR_SAMP
   
  
  協(xié)方差和標(biāo)準(zhǔn)差相似,但是協(xié)方差能衡量一列數(shù)據(jù)對其他列的影響。假如存在一列是不可改變的(意味著次列與其他列無任何關(guān)系),那么協(xié)方差就為零,表示位COVER_SAMP(n,0)。
  
  假如一列的變化和另一列有關(guān),那么協(xié)方差值就會(huì)變大。COVER_POP適用于計(jì)算的人口樣本方差的近似值,而COVER_SAMP則應(yīng)該用于計(jì)算數(shù)據(jù)的實(shí)際協(xié)方差。
  
  CORR
  相關(guān)性是用于衡量相關(guān)系數(shù)的。它將兩列的相關(guān)程度規(guī)格化為-1和1之間的一個(gè)數(shù)值。假如是1或者-1的話,就說明他們是完整的線性相關(guān)。表示位CORR(n,n)。
  
  假如相關(guān)性為零,那么意味著一個(gè)變量對另一個(gè)變量將沒有影響。假如兩列根本就沒有改變,那就意味著這列的標(biāo)準(zhǔn)差為零,也就是說對其計(jì)算相關(guān)性是沒有意義的,所以此時(shí)CORR的返回值為空。舉例來說,CORR(n,1)的返回值將為空。
  
  REGR_
  假設(shè)已知兩數(shù)據(jù)相關(guān),回溯函數(shù)能通過已知數(shù)據(jù)畫一條能反映他們的發(fā)展趨勢的曲線。并能通過這條線來在已知數(shù)據(jù)的基礎(chǔ)上估計(jì)得到新的數(shù)據(jù)。事實(shí)上,由于得到的結(jié)果一條線而不是數(shù)字——所有的結(jié)果都是通過圖中的線描述出來的,所以說回溯函數(shù)是一系列與眾不同的函數(shù)。在圖中,我們認(rèn)為第一表達(dá)式為“Y軸”,而第二表達(dá)式為“X軸”。
  
  回溯函數(shù)是我們能進(jìn)行一些初步估計(jì)。
估計(jì)近似值的公式為:
  
  PRed1 = (pred2 * regr_slope(eXPr1,expr2)) + regr_intercept(expr1,expr2)
  pred2 = (pred1 - regr_intercept(expr1,expr2)) / regr_slope(expr1,expr2)
  回溯函數(shù)要求有兩個(gè)數(shù)型參數(shù)。假如你要對日期數(shù)據(jù)進(jìn)行操作,那么你必須先將這些數(shù)據(jù)轉(zhuǎn)換成線行數(shù)類型。在Oracle SQL中,最好的辦法就是就這些日期間去一個(gè)參照日期,從而得到對應(yīng)的不同的天數(shù)(天數(shù)的類型符合要求了)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙里县| 桂东县| 遵义县| 雅安市| 涟水县| 香港| 龙胜| 巴塘县| 乌兰察布市| 福清市| 积石山| 肃宁县| 黄梅县| 漠河县| 永嘉县| 江川县| 古蔺县| 松溪县| 吉首市| 蓝山县| 肇源县| 鄂托克旗| 山阴县| 兰考县| 靖州| 闽侯县| 洛隆县| 乌兰察布市| 张家口市| 汉中市| 故城县| 阜新市| 扶沟县| 西安市| 大荔县| 汉寿县| 定边县| 林口县| 高邮市| 梧州市| 太保市|