Как рассчитать стандартное отклонение ряда чисел в широком формате из таблицы? - PullRequest
0 голосов
/ 17 июня 2020

Я использую SQL Server 2014, и у меня есть таблица с именем t1. Извлечение приведено ниже:

Id   n1  n2  n3  n4  n5  n6
100  3   6   10  11  18  31
101  10  15  16  22  28  37
...

Ожидаемый результат:

Id   n1  n2  n3  n4  n5  n6   StdDev
100  3   6   10  11  18  31    10.1
101  10  15  16  22  28  37     9.9
...

Обязательно ли мне нужно преобразовывать сводную таблицу t1 в длинный формат (и использовать функцию STDEV()), чтобы выполнить эту операцию или есть другой способ справиться с этим?

1 Ответ

2 голосов
/ 17 июня 2020

Вы можете использовать VALUES конструктор значений таблицы и APPLY оператор:

Таблица:

CREATE TABLE Data (
   Id int,
   n1 int,
   n2 int,
   n3 int,
   n4 int,
   n5 int,
   n6 int
)
INSERT INTO Data (Id, n1, n2, n3, n4, n5, n6)
VALUES
   (100,  3,   6,   10,  11,  18,  31),
   (101,  10,  15,  16,  22,  28,  37)

Оператор:

SELECT d.*, c.StDev
FROM Data d
CROSS APPLY (
   SELECT STDEV(n) AS StDev
   FROM (VALUES (n1), (n2), (n3), (n4), (n5), (n6)) v (n)
) c

Результат:

Id  n1  n2  n3  n4  n5  n6  StDev
100 3   6   10  11  18  31  10.1077528000375
101 10  15  16  22  28  37  9.8725207858310
...