我有下表:
id | decided_at | reviewer
1 2020-08-10 13:00 john
2 2020-08-10 14:00 john
3 2020-08-10 16:00 john
4 2020-08-12 14:00 jane
5 2020-08-12 17:00 jane
6 2020-08-12 17:50 jane
7 2020-08-12 19:00 jane
我想做的是获取和之间的每一天的差值,min
并从ID中获取最小值,最小值和最大值之间的范围以及最大值max
的总数count
。目前,我只能获取过去一天的数据。
所需的输出:
Date | Time(h) | Count | reviewer
2020-08-10 3 3 john
2020-08-12 5 4 jane
由此,我希望获得过去x天数的平均值。
示例:如果今天是13日,请过滤过去2天(48小时)的输出:
reviewer | reviews/hour
jane 5/4 = 1.25
范例2:如果今天是13日,请筛选过去3天(48小时)
reviewer | reviews/hour
john 3/3 = 1
jane 5/4 = 1.25
理想情况下,如果在LookML中不使用派生表就可以做到这一点,那将是最好的选择。否则,SQL解决方案将是不错的选择,我可以尝试转换为LookerML。
谢谢!
在SQL中,一种解决方案是使用两种聚合级别:
select reviewer, sum(cnt) / sum(diff_h) review_per_hour
from (
select
reviewer,
date(decided_at) decided_date,
count(*) cnt,
timestampdiff(hour, min(decided_at), max(decided_at)) time_h
from mytable
where decided_at >= current_date - interval 2 day
group by reviewer, date(decided_at)
) t
group by reviewer
子查询将过滤日期范围,并按审阅者和日期进行汇总,并以小时为单位计算记录数以及最小日期和最大日期之间的差。然后,外部查询由审阅者聚合并进行最终计算。
计算日期差的实际功能因数据库而异。timestampdiff()
在MySQL中受支持-其他引擎都有替代品。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句