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

SQL:Показване на средно и мин./макс. в рамките на стандартните отклонения

За да изчислите стандартното отклонение, трябва да преминете през всички елементи, така че би било невъзможно да направите това в една заявка. Мързеливият начин би бил просто да го направите в две преминавания:

DECLARE
    @Avg int,
    @StDev int

SELECT @Avg = AVG(Sales), @StDev = STDEV(Sales)
FROM tbl_sales
WHERE ...

SELECT AVG(Sales) AS AvgSales, MAX(Sales) AS MaxSales, MIN(Sales) AS MinSales
FROM tbl_sales
WHERE ...
AND Sales >= @Avg - @StDev * 3
AND Sales <= @Avg + @StDev * 3

Друга проста опция, която може работа (доста често срещана при анализ на научни данни) би била просто да се откажат минимумът и максимумът x стойности, което работи, ако имате много данни за обработка. Можете да използвате ROW_NUMBER за да направите това в един израз:

WITH OrderedValues AS
(
    SELECT
        Sales,
        ROW_NUMBER() OVER (ORDER BY Sales) AS RowNumAsc,
        ROW_NUMBER() OVER (ORDER BY Sales DESC) AS RowNumDesc
)
SELECT ...
FROM tbl_sales
WHERE ...
AND Sales >
(
    SELECT MAX(Sales)
    FROM OrderedValues
    WHERE RowNumAsc <= @ElementsToDiscard
)
AND Sales <
(
    SELECT MIN(Sales)
    FROM OrderedValues
    WHERE RowNumDesc <= @ElementsToDiscard
)

Заменете ROW_NUMBER с RANK или DENSE_RANK ако искате да отхвърлите определен брой уникални стойности.

Отвъд тези прости трикове започвате да навлизате в някои доста тежки статистики. Трябва да се справям с подобни видове валидиране и това е твърде много материал за SO публикация. Има сто различни алгоритми, които можете да настройвате по дузина различни начини. Ще се опитам да го запазя просто, ако е възможно!



  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. Как да увеличим производителността на база данни?

  3. SQL Server (TSQL) - Възможно ли е паралелно да се изпълняват оператори EXEC?

  4. Използвайте set в оператор case в SQL Server

  5. Профилиране на заявка 101 — Да, наистина може да подобри производителността на вашия SQL сървър