sql-server - 四分位数范围 - 下限、上限和中位数

标签 sql-server vb.net excel

我正在尝试根据可以是任意长度的数字数组来计算四分位数范围,例如

1,  1,  5,  6,  7,  8,  2,  4,  7,  9,  9,  9,  9

我需要从这个四分位数范围中计算出的值是:

  • 上四分位数
  • 中位数
  • 下四分位

如果我将上面的数字数组转储到 Microsoft Excel(A:M 列)中,那么我可以使用以下公式:

  • =QUARTILE.INC(A1:M1,1)
  • =QUARTILE.INC(A1:M1,2)
  • =QUARTILE.INC(A1:M1,3)

要得到我的答案:

  • 4
  • 7
  • 9

我现在需要在 SQL Server 或 VB.NET 中计算出这 3 个值。我可以使用这些语言中的任何一种获取任何格式或对象的数组值,但我找不到任何存在的函数,例如 Excel 具有的 QUARTILE.INC 函数。

有谁知道如何在 SQL Server 或 VB.NET 中实现这一点?

最佳答案

可能有更简单的方法,但要获得四分位数,您可以使用 NTILE (Transact-SQL)

Distributes the rows in an ordered partition into a specified number of groups. The groups are numbered, starting at one. For each row, NTILE returns the number of the group to which the row belongs.

对于您的数据:

SELECT  1 Val
INTO    #temp
UNION ALL
SELECT  1
UNION ALL
SELECT  5
UNION ALL
SELECT  6
UNION ALL
SELECT  7
UNION ALL
SELECT  8
UNION ALL
SELECT  2
UNION ALL
SELECT  4
UNION ALL
SELECT  7
UNION ALL
SELECT  9
UNION ALL
SELECT  9
UNION ALL
SELECT  9
UNION ALL
SELECT  9

-- NTILE(4) specifies you require 4 partitions (quartiles)
SELECT  NTILE(4) OVER ( ORDER BY Val ) AS Quartile ,
        Val
INTO #tempQuartiles
FROM    #temp

SELECT * 
FROM #tempQuartiles

DROP TABLE #temp
DROP TABLE #tempQuartiles

这会产生:

Quartile    Val
1           1
1           1
1           2
1           4
2           5
2           6
2           7
3           7
3           8
3           9
4           9
4           9
4           9

从中你可以弄清楚你想要什么。

因此修改 SELECT 你可以这样做:

SELECT Quartile, MAX(Val) MaxVal
FROM #tempQuartiles
WHERE Quartile <= 3
GROUP BY Quartile

生产:

Quartile    MaxVal
1           4
2           7
3           9

关于sql-server - 四分位数范围 - 下限、上限和中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29945796/

相关文章:

excel - 需要帮助转置相同标准的不同值[难以描述,我需要的内容示例]

vba - 使用 Offset 函数复制到不同工作表的第一个空行

excel - 从数据范围转换到数据末尾

sql - varchar(-1) 是什么意思?

sql - 在同一张表上进行子查询/联接

wpf - 如何从用户控件触发自定义事件?

Vb.Net设置用户控件属性

asp.net - 为什么我的 Webform 上的复选框对控制循环代码不可见?

sql-server - 数据库设计 : one large table versus several smaller tables

sql - 已删除数据库 SQL Server 2012 中的对象