sql >> Databáze >  >> RDS >> Sqlserver

Eliminace odlehlých hodnot standardní odchylkou v SQL Server

Pokud předpokládáte rozložení událostí pomocí zvonové křivky, pak pouze 68 % hodnot bude v rámci 1 standardní odchylky od průměru (95 % je pokryto 2 standardními odchylkami).

Načetl bych proměnnou se standardní odchylkou vašeho rozsahu (odvozeno pomocí stdev / stdevp sql) a poté vyberte hodnoty, které jsou v rámci příslušného počtu standardních odchylek.

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. Odstranit duplikáty z velké datové sady (> 100 milionů řádků)

  2. Volání uložené procedury s parametrem Out pomocí PDO

  3. 5 bezpečnostních výhod cloudových řešení pro monitorování databází

  4. Jak získat ekvivalent příkazu postgres 'nth_value' v pyspark Hive SQL?