平均數、中位數、眾數都是度量一組數據集中趨勢的統計量。所謂集中趨勢是指一組數據向某一中心值靠攏的傾向,測度集中趨勢就是尋找數據一般水平的代表值或中心值。而這三個特征數又各有特點,能夠從不同的角度提供信息。
平均數
- 特點:計算用到所有的數據,它能夠充分利用數據提供的信息,它具有優 的數學性質,因此在實際應用中較為廣泛。但它受極端值的影響較大。
- 應用場合:沒有極端值的情況下數據集中趨勢的刻畫。
- 如:小明五次測試的成績好下,87、88、89、93、94你認為小明這五次測試成績怎樣?
- 分析:
中位數
- 特點:中位數是一組數據中間位置的代表值。計算簡單,不受極端值的影響,但不能充分利用每個數據所提供的信息。
- 應用場合:有極端值,且無某數據重復出現多次的情況下集中趨勢的刻畫。
- 如:某公司員工月工資如下:
這個公司員工的月工資有一般水平是多少?- 員工 經理 副經理 員工a 員工b 員工c 員工d 員工e 員工f 雜工
- 月工資/元 6000 4000 1700 1300 1200 1100 1100 1100 500
- 分析:這組數據的平均數是2000,而高於這一水平的只有2人,不具有代表性。其中位數是1200,處於其相當水平的有5人,占大多數。較好的反映了一般水平。
眾數
- 特點:眾數是一組數據中出現次數最多的數據。不受極端值的影響,當一組數據中某些數據多次重復出現時,眾數往往是人們最關心的一個量。但它不能象平均數那樣充分利用數據提供信息。
- 應用場合:有極端值,有某些數據多次重復出現時。
- 如:一家鞋店在一段時間內銷售了某種女鞋30雙,各種尺碼鞋的銷量如下:
你能為這家鞋店提供進貨建議嗎?- 尺碼/厘米 22 22.5 23 23.5 24 24.5 25
- 銷售量/雙 1 1 2 5 15 5 1
- 分析:由於進貨最關心的是哪種尺碼的鞋最多,而這里很明顯24碼的要占相當大的量15雙。較好的得到所需信息。
SqlServer驗證
-
CREATE TABLE graduates ( name varchar(255) , income int ) go INSERT INTO graduates VALUES ('桑普森', '400000'); INSERT INTO graduates VALUES ('邁克', '30000'); INSERT INTO graduates VALUES ('懷特', '20000'); INSERT INTO graduates VALUES ('阿諾德', '20000'); INSERT INTO graduates VALUES ('史密斯', '20000'); INSERT INTO graduates VALUES ('勞倫斯', '15000'); INSERT INTO graduates VALUES ('哈德遜', '15000'); INSERT INTO graduates VALUES ('肯特', '10000'); INSERT INTO graduates VALUES ('貝克', '10000'); INSERT INTO graduates VALUES ('斯科特', '10000');
取眾數
-
select income,count(*) cnt from graduates group by income having count(*) >= ( select max(cnt) from (select count(*) cnt from graduates group by income) tmp )
取中位數
-
select AVG(DISTINCT income) from ( select T1.income from graduates T1,graduates T2 group by T1.income having sum(case when T2.income >= T1.income then 1 else 0 end) >= count(*)/2 and sum(case when T2.income <= T1.income then 1 else 0 end) >= count(*)/2 ) tmp go
取眾數對應的行
-
/*需求電壓眾數*/ update ETL_Day_UserCar set ETL_Day_UserCar.DVMode = a.DVMode from ( select a.BizDate,a.CustID,a.CarModel,a.maxdv as DVMode,count(1) as RecordCount, Row_NUMBER() OVER(PARTITION BY BizDate,CustID,CarModel ORDER BY count(1) DESC) AS SN from ETL_UserCarReset a with(nolock) group by a.BizDate,a.CustID,a.CarModel,a.maxdv ) a where ETL_Day_UserCar.BizDate = a.BizDate and ETL_Day_UserCar.CustID = a.CustID and ETL_Day_UserCar.CarModel = a.CarModel and a.SN = '1' go
參考資料