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



我有一个这样的数据集:

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,我将得到null。(max-min)/4是一个类似于'1993964.0000000000'或'3402.7500000000'的数字,我假设它的单位是秒。我可以为所有条目获得这个,但是一旦我试图将它添加到开始日期时间或从结束日期时间中减去它,我将为那些未在同一天添加的类型获得null。是否有一种更直接的方法来定义日期时间的范围,例如在2013-09-03 18:17:20和2013-09-06 08:37:34之间的第三个20%,然后计算该范围内属性的出现次数?

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

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

最新更新