SQL Server 下取中位元(中位值)的方法

來源:互聯網
上載者:User

  中位元是指將資料按大小順序排列起來,形成一個數列,居於數列中間位置的那個資料。中位元用Me表示。

  從中位元的定義可知,所研究的資料中有一半小於中位元,一半大於中位元。中位元的作用與算術平均數相近,也是作為所研究資料的代表值。在一個等差數列或一個常態分佈數列中,中位元就等於算術平均數。

  在數列中出現了極端變數值的情況下,用中位元作為代表值要比用算術平均數更好,因為中位元不受極端變數值的影響;如果研究目的就是為了反映中間水平,當然也應該用中位元。在統計資料的處理和分析時,可結合使用中位元。

  將資料排序後,位置在最中間的數值。即將資料分成兩部分,一部分大於該數值,一部分小於該數值。中位元的位置:當樣本數為奇數時,中位元=(N+1)/2 ; 當樣本數為偶數時,中位元為N/2與1+N/2的均值 ,或求出中間兩個數的平均數作為中位元。

  在Excel中有函數MEDIAN來取中位元,但是在SQL Server中則沒有該內建的函數,需要用以下方法求得。

  1. create table #tb(pid varchar(10),coadcladcon int)  
  2. insert into #tb  
  3.  select 'PRAA0370',1 union all  
  4.  select 'PRAA0370',2 union all  
  5.  select 'PRAA0370',3 union all  
  6.  select 'PRAA0370',4 union all  
  7.  select 'PRAA0370',5 union all  
  8.  select 'PRAA0370',6 union all  
  9.  select 'PRAA0371',1 union all  
  10.  select 'PRAA0371',2 union all  
  11.  select 'PRAA0371',3 union all  
  12.  select 'PRAA0371',4 union all  
  13.  select 'PRAA0371',5 union all  
  14.  select 'PRAA0371',6 union all  
  15.  select 'PRAA0371',7   
  16.   
  17. WITH OrdersRN AS  
  18. (  
  19.   SELECT pid, coadcladcon,  
  20.     ROW_NUMBER() OVER(PARTITION BY pid ORDER BY coadcladcon) AS RowNum,  
  21.     COUNT(*) OVER(PARTITION BY pid) AS Cnt  
  22.   FROM #tb  
  23. )  
  24. select pid,avg(coadcladcon) coadcladcon from (  
  25. SELECT pid,coadcladcon,RowNum,Cnt  
  26. FROM OrdersRN o  
  27. WHERE RowNum IN((Cnt + 1) / 2,(Cnt + 2) / 2)   
  28. )a  
  29. group by pid  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.