Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Елиминиране на отклонения чрез стандартно отклонение в SQL Server

Ако приемате разпределение на събитията по камбанообразна крива, тогава само 68% от стойностите ще бъдат в рамките на 1 стандартно отклонение от средната стойност (95% са обхванати от 2 стандартни отклонения).

Бих заредил променлива със стандартното отклонение на вашия диапазон (извлечено с помощта на stdev / stdevp sql функция) и след това изберете стойностите, които са в рамките на подходящия брой стандартни отклонения.

declare @stdtest table (colname varchar(20), colvalue int)

insert into @stdtest (colname, colvalue) values ('a', 2)
insert into @stdtest (colname, colvalue) values ('b', 4)
insert into @stdtest (colname, colvalue) values ('c', 4)
insert into @stdtest (colname, colvalue) values ('d', 4)
insert into @stdtest (colname, colvalue) values ('e', 5)
insert into @stdtest (colname, colvalue) values ('f', 5)
insert into @stdtest (colname, colvalue) values ('g', 7)
insert into @stdtest (colname, colvalue) values ('h', 9)

declare @std decimal
declare @mean decimal
declare @lower decimal
declare @higher decimal
declare @noofstds int

select @std = STDEV(colvalue), @mean = AVG(colvalue) from @stdtest

--68%
set @noofstds = 1
select @lower = @mean - (@noofstds * @std)
select @higher = @mean + (@noofstds * @std)

select @lower, @higher, * from @stdtest where colvalue between @lower and @higher

--returns rows with a colvalue between 3 and 7 inclusive

--95%
set @noofstds = 2
select @lower = @mean - (@noofstds * @std)
select @higher = @mean + (@noofstds * @std)

select @lower, @higher, * from @stdtest where colvalue between @lower and @higher

--returns rows with a colvalue between 1 and 9 inclusive


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да пусна външен ключ в SQL Server?

  2. Неочаквано поведение @@rowcount в UDF в MS SQL 2019

  3. Създайте изчислена колона, като използвате данни от друга таблица

  4. OPENROWSET с Excel файл

  5. Използване на TransactionScope с read uncommitted - необходимо ли е с (nolock) в SQL?