如何测量一组天数的平均计数,每个天数都有自己的数据点,SQL/LookerML
How to measure an average count from a set of days each with their own data points, in SQL/LookerML
我有以下 table:
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
和 max
之间的差异,并从 id 中获取总数 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 中是可能的,而无需 使用派生的 table,那将是最好的。否则,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 中得到支持 - 其他引擎都有替代方案。
我有以下 table:
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
和 max
之间的差异,并从 id 中获取总数 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 中是可能的,而无需 使用派生的 table,那将是最好的。否则,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 中得到支持 - 其他引擎都有替代方案。