gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:33:04 32 4
gpt4 key购买 nike

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

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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com