【发布时间】:2013-01-09 20:45:43
【问题描述】:
我想计算这些fiddle with my DB and the query中我称之为“差异”的值的上四分位数和下四分位数
如何使用 SQLite 做到这一点?
http://www.sqlite.org/contrib?orderby=date 上有一个扩展名 extension-functions.c,其中包含这些命令。
如果这足以解决我的问题?如何将它集成到我的 Windows-XAMPP 环境中?
【问题讨论】:
我想计算这些fiddle with my DB and the query中我称之为“差异”的值的上四分位数和下四分位数
如何使用 SQLite 做到这一点?
http://www.sqlite.org/contrib?orderby=date 上有一个扩展名 extension-functions.c,其中包含这些命令。
如果这足以解决我的问题?如何将它集成到我的 Windows-XAMPP 环境中?
【问题讨论】:
我已经在您的查询中计算了上四分位数和下四分位数。
请检查这个小提琴:http://sqlfiddle.com/#!2/4f1a82/31/0
基本上逻辑是:
因此添加的查询逻辑是:
((MIN(diff)+ AVG(diff)) / 2) AS lowerQuartile,
((MAX(diff)+ AVG(diff)) / 2) AS upperQuartile,
【讨论】:
我发现了一个基于this blog post 的rather unpleasant approach - 基本上,使用 GROUP_CONCAT 按顺序列出所有值,并使用子字符串函数提取第 25 或第 75 个百分位数的值。
【讨论】:
这里有 2 个计算上四分位数 (Q3) 的版本:
选项 1: 计算 Q3 位置并获得其间值的平均值。 http://sqlfiddle.com/#!3/29f19/5 来源:How to Calculate the Upper Quartile
选项 2(更准确): 计算 Q3 位置并对最近的位置赋予更多权重(插值)。这种方法与 MS Excel 中的QUARTILE.EXC 相同。
http://sqlfiddle.com/#!3/29f19/6
注意:如果您想实现使用 N-1 的 QUARTILE/QUARTILE.INC,您可以通过减小大小而不是增加大小来实现。 SELECT @Q3_POS = 0.75*(COUNT(*)-1.00) from [Table1]
更多测试:
【讨论】: