zoukankan      html  css  js  c++  java
  • 平均数_中位数_众数在SqlServer实现

    平均数、中位数、众数都是度量一组数据集中趋势的统计量。所谓集中趋势是指一组数据向某一中心值靠拢的倾向,测度集中趋势就是寻找数据一般水平的代表值或中心值。而这三个特征数又各有特点,能够从不同的角度提供信息。

    平均数


    • 特点:计算用到所有的数据,它能够充分利用数据提供的信息,它具有优 的数学性质,因此在实际应用中较为广泛。但它受极端值的影响较大。
    • 应用场合:没有极端值的情况下数据集中趋势的刻画。
    • 如:小明五次测试的成绩好下,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
        

    参考资料


  • 相关阅读:
    cisco 4500X 交换机限速
    HPE 交换机基础配置
    MySQL数据库之主从复制
    MySQL复制线程状态转变
    MySQL数据库备份之mysqldump
    MySQL数据库之慢查询日志
    MySQL数据库之多线程备份工具mydumper
    MySQL数据库之索引
    MySQL之二进制日志
    MySQL数据库之sql_mode解释
  • 原文地址:https://www.cnblogs.com/tgzhu/p/9946628.html
Copyright © 2011-2022 走看看