我有有列的表稱爲工作: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)'?我認爲你的查詢更通用,但每個用戶每天只有一個條目。兩者都應該給出相同的答案? –