中位元是指將資料按大小順序排列起來,形成一個數列,居於數列中間位置的那個資料。中位元用Me表示。
從中位元的定義可知,所研究的資料中有一半小於中位元,一半大於中位元。中位元的作用與算術平均數相近,也是作為所研究資料的代表值。在一個等差數列或一個常態分佈數列中,中位元就等於算術平均數。
在數列中出現了極端變數值的情況下,用中位元作為代表值要比用算術平均數更好,因為中位元不受極端變數值的影響;如果研究目的就是為了反映中間水平,當然也應該用中位元。在統計資料的處理和分析時,可結合使用中位元。
將資料排序後,位置在最中間的數值。即將資料分成兩部分,一部分大於該數值,一部分小於該數值。中位元的位置:當樣本數為奇數時,中位元=(N+1)/2 ; 當樣本數為偶數時,中位元為N/2與1+N/2的均值 ,或求出中間兩個數的平均數作為中位元。
在Excel中有函數MEDIAN來取中位元,但是在SQL Server中則沒有該內建的函數,需要用以下方法求得。
- create table #tb(pid varchar(10),coadcladcon int)
- insert into #tb
- select 'PRAA0370',1 union all
- select 'PRAA0370',2 union all
- select 'PRAA0370',3 union all
- select 'PRAA0370',4 union all
- select 'PRAA0370',5 union all
- select 'PRAA0370',6 union all
- select 'PRAA0371',1 union all
- select 'PRAA0371',2 union all
- select 'PRAA0371',3 union all
- select 'PRAA0371',4 union all
- select 'PRAA0371',5 union all
- select 'PRAA0371',6 union all
- select 'PRAA0371',7
-
- WITH OrdersRN AS
- (
- SELECT pid, coadcladcon,
- ROW_NUMBER() OVER(PARTITION BY pid ORDER BY coadcladcon) AS RowNum,
- COUNT(*) OVER(PARTITION BY pid) AS Cnt
- FROM #tb
- )
- select pid,avg(coadcladcon) coadcladcon from (
- SELECT pid,coadcladcon,RowNum,Cnt
- FROM OrdersRN o
- WHERE RowNum IN((Cnt + 1) / 2,(Cnt + 2) / 2)
- )a
- group by pid