我有有列的表称为工作:PostgreSQL的数据基于桶分析
CREATE TABLE work (user text, user_type text, medium text,
docs_read int, on_date timestamp with timezone);
我想创建每天阅读的文件数量的桶(0-99,100-199等),计算每天user_type和medium的每种组合的平均,最小和最大生产力。
我可以on_date计算docs_read和组和使用,让每一天docs_read数:
SELECT on_date::date as day, sum(docs_read) as total_docs_read
FROM work GROUP BY day;
现在,我不得不每天组total_docs_read成大小100桶,并计算平均值,最小值和每个用户类型的生产力的最大值和每个桶的介质。
生产力=在用户的日/数docs_read的和工作的那一天
基本上我们有不同类型的用户喜欢的教授,助理教授等阅读不同语言的文档,并且我们想知道多少文档他们每位用户每天阅读。因此,对于每个工作负荷桶,每个用户类型和媒介,我希望获得平均生产力的平均值,最大值和最小值,这些值是在桶内的多天内每天的平均生产力。
样本输出应该是:
docs_read_bucket user_type medium avg_prod max_prod min_prod
0-99 A English 30 50 15
为什么使用此“sum(docs_read)/ count(distinct(user)) '而不是'AVG(docs_read)'?我认为你的查询更通用,但每个用户每天只有一个条目。两者都应该给出相同的答案? –