如何从表中计算宽格式的一系列数字的标准差?

wwwo4jvm  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(356)

我正在使用 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() 函数)来执行此操作,或者是否有其他方法可以处理它?

ncgqoxb0

ncgqoxb01#

你可以用 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

相关问题