• 平均数_中位数_众数在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
        

    参考资料


  • 相关阅读:
    2-红帽RHEL 7起步
    1-了解开源共享精神
    5.pip安装时使用国内源,加快下载速度
    4. python-运算符(另类语法)
    海燕python学习目录,特别棒!
    1Python学习CentOS 7 Linux环境搭建
    2python脚本在window编辑后linux不能执行的问题
    3Python脚本在linux环境下头文件解释
    5G 频谱 新技术
    python -实现单例模式五种方法
  • 原文地址:https://www.cnblogs.com/tgzhu/p/9946628.html
Copyright © 2020-2023  润新知