找到日期时间范围的百分位数

时间:2014-06-20 03:08:02

标签: sql datetime

我有这样的数据集:

problem_id -- aspect_type -- time_created
28 -- requirement -- 9/9/2013 16:44
28 -- requirement -- 9/9/2013 18:47
28 -- artifact -- 9/9/2013 20:32
35 -- artifact -- 9/5/2013 1:52
35 -- artifact -- 9/9/2013 12:06
35 -- function -- 9/9/2013 11:55

对于每个problem_id,我想在创建所有方面的特定时间范围内找到主要的aspect_type。例如,在上面的集合中,对于问题28,第一和第二季度由类型“要求”控制,最后一个季度由类型“工件”控制。
为此,首先我要确定时间范围。我可以通过以下方式获得最后四分位数的开头:

cast(max(created)-(max(created)-min(created))/4 as datetime) as last_quartile

但这只适用于同一天在问题28中创建的内容。对于35之类的其他问题ID,我会得到null。(max-min)/ 4是'1993964.0000000000'或'3402.7500000000'之类的数字我假设是在几秒钟内。我可以为所有条目获取此信息,但是一旦我尝试将其添加到开始日期时间或从结束日期时间中减去它,我将为那些未在同一天添加的类型获取null。 是否有更简单的方法来定义日期时间范围,例如2013-09-03 18:17:20和2013-09-06 08:37:34之间的第三个20%,然后计算属性的出现次数范围?

1 个答案:

答案 0 :(得分:0)

对于最后一个四分位数开始的日期/时间,尝试类似:

max(created) - interval timestampdiff(second, max(created), min(created)) / 4 second