- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要对时间间隔进行一些统计分析,即表中两个日期时间字段之间的差异。
根据聚合函数文档here .骨料MAX
、MIN
、AVG
等函数,即一般聚合函数接受日期时间和间隔字段的参数。
然而,对于更高级的统计函数,如 stddev_pop
、var_pop
、var_sam
和 std_samp
,支持的输入似乎只能是数字或类似的。尽管文档表明这两种功能之间没有区别
... (These are separated out merely to avoid cluttering the listing of more-commonly-used aggregates.)...
有什么简单的方法可以计算这些参数吗?为什么不支持间隔类型作为参数?这些类型的统计聚合函数是单位不变的?
附言我不确定我是否可以提取纪元并使用它,因为某些值可能是负数。
最佳答案
正如我在评论中所说,要手动计算样本标准差,您需要在某个时候将一个区间乘以一个区间。 PostgreSQL 不支持。
要解决该问题,请将时间间隔缩短为数小时、数分钟或数秒(或其他任何时间)。事实证明,这比手动计算要简单得多,这也说明了为什么 PostgreSQL 不支持这种开箱即用的计算。
首先,来自 PostgreSQL general mailing list 的函数
CREATE OR REPLACE FUNCTION interval_to_seconds(interval)
RETURNS double precision AS $$
SELECT (extract(days from $1) * 86400)
+ (extract(hours from $1) * 3600)
+ (extract(minutes from $1) * 60)
+ extract(seconds from $1);
$$ LANGUAGE SQL;
现在我们可以取一组简单区间的标准差。
with intervals (i) as (
values (interval '1 hour'), (interval '2 hour'), (interval '3 hour'),
(interval '4 hour'), (interval '5 hour')
)
, intervals_as_seconds as (
select interval_to_seconds(i) as seconds
from intervals
)
select stddev(seconds), stddev(seconds)/60
from intervals_as_seconds
in_sec in_mindouble precision double precision--5692.09978830308 94.8683298050514
You can verify the results however you like.
Now let's say you wanted hour granularity instead of seconds. Clearly, the choice of granularity is highly application dependent. You might define another function, interval_to_hours(interval)
. You can use a very similar query to calculate the standard deviation.
with intervals (i) as (
values (interval '1 hour'), (interval '2 hour'), (interval '3 hour'),
(interval '4 hour'), (interval '5 hour')
)
, intervals_as_hours as (
select interval_to_hours(i) as hours
from intervals
)
select stddev(hours) as stddev_in_hrs
from intervals_as_hours
stddev_in_hrsdouble precision--1.58113883008419
The value for standard deviation in hours is clearly different from the value in minutes or in seconds. But they measure exactly the same thing. The point is that the "right" answer depends on the granularity (units) you want to use, and there are a lot of choices. (From microseconds to centuries, I imagine.)
Also, consider this statement.
select interval_to_hours(interval '45 minutes')
interval_to_hoursdouble precision--0
这是正确答案吗?你不能说;正确答案取决于应用程序。我可以想象将 45 分钟视为 1 小时的应用程序。我还可以想象应用程序希望将 45 分钟视为 1 小时用于一些 计算,而作为 0 小时用于其他 计算。
然后想想这个问题。一个月有多少秒?表达式 select interval '1' month;
有效;秒数取决于一个月中有多少天。
我认为这就是 PostgreSQL 不支持这种开箱即用的计算的原因。使用区间参数的正确方法过于依赖于应用程序。
稍后。 . .
我在其中一个 PostgreSQL 邮件列表上找到了这个讨论。
关于sql - Postgres : Statistical functions on date time intervals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39981920/
通过 Management Studio 执行 T-SQL 查询时,我可以使用 SET STATISTICS IO ON和 SET STATISTICS TIME ON捕获统计信息以进行查询调整。 当
给定一系列交易 Symbol,Quantity,Price,Side SPY,100,127,Buy SPY,87,125,Sell SPY,109,115,Sell SPY,122,95,Sell
假设您有一个 int 数组(使用具有固定大小 int 的任何语言)。您将如何计算最接近其平均值的 int? 编辑:要清楚,结果不必出现在数组中。也就是说,对于输入数组 [3, 6, 7] 的预期结果是
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
像谷歌新闻这样的新闻媒体如何自动对关于新兴主题的文档进行分类和排名,比如“奥巴马的 2011 年预算”? 我有一堆用棒球数据标记的文章,比如球员姓名和文章的相关性(谢谢,opencalais),我很想
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想要改善这个问题吗?更新问题,以便将其作为on-topi
我需要一个随机数生成器,它以可编程的均值选择指定范围内的数字。 例如,我需要选择2到14之间的数字,并且我需要将随机数的平均值设为5。 我经常使用随机数生成器。通常我只需要一个均匀的分布。 我什至不知
我已经为 IE 6 高对比度模式优化网站并增加字体大小做了很多工作,目的是改善视障人士的体验。但是,在我看来,由于高级浏览器提供的改进的缩放功能,任何有视力障碍的人在升级时都会更加警惕。是否有可用的浏
我有一个包含几个自变量的表,我需要从中计算公式以生成因变量。尽管经过试验,我已经为因变量提出了一个值。 例如,我有一个这样的表: x1 | x2 | x3 || z(value found by ex
我在看 http://lse.sourceforge.net/locking/dcache/dcache_lock.html ,其中测量每个函数的自旋锁时间: SPINLOCKS HO
我正在评估许多不同的算法,它们的工作是预测事件发生的概率。 我正在大型数据集上测试算法。我使用“均方根误差”来衡量它们的有效性,它是((误差总和)平方的平方根)。误差是预测概率(0 和 1 之间的浮点
我有兴趣知道如何根据产品的评级计算排名分数。例如,以苹果应用商店为例。有两个产品 A 和 B。两者的平均评分相同,但 100 位评论者给 A 评分,而 1000 位评论者给 B 评分。直觉上似乎 B
假设我的检索系统的NDCG分数是0.8。我如何解释这个分数。我如何告诉读者这个分数很重要? 最佳答案 NDCG是一种排名指标。在信息检索字段中,您应该预测文档的排序列表,并将它们与相关文档的列表进行比
例如我有两个范围 (1) 0 to 3 (2) 10 to 15 在范围 (1) 中,我有 0 到 3 之间
我想分析一项网络调查的答案(如果有兴趣,Git User's Survey 2008)。一些问题是自由形式的问题,例如“您是如何听说 Git 的?”。有 3,000 多条回复完全靠手工分析这些回复是不
我正在使用 vb.net/asp.net 我的团队创建了一个 Web 应用程序(癌症中心的研究数据库) 我想知道是否有人有关于以编程方式绘制生存曲线的想法 我到处搜索,找不到任何想法 最佳答案 你必须
我正在研究一个需要计算样本协方差矩阵的特征值的问题。 问题是随着时间的推移数据会发生变化(因此样本协方差矩阵)并且需要重新计算特征值。因为特征值的计算成本很高,所以我们想看看是否有任何方法可以更新现有
我正在编写一个程序,显示从财政年度开始到当前日期的当年销售额,与前一年的相同日期范围进行比较。 我的问题是,我需要为闰年做出哪些努力? 更新: 好吧,他们想要它,就像我说的那样(比较去年到同一日期)但
我有一个集合 S={a1,a2,a3,a4,a5,......,an}。每个元素被选中的概率分别是 {p1,p2,p3,p4,p5,...,pn}(当然 p1+p2+p3+p4+p5+....+pn=
我是一名优秀的程序员,十分优秀!