2014-06-25 93 views
0

我想了解用戶進入辦公室的平均次數。對於前來就職的獨特用戶,我有一個類似的場景。每次用戶進入辦公室時,我的數據庫都有數據。單獨計算獨特日期的平均數

請注意:每個人都有不同的名字,因爲我沒有使用他們的名字,而是使用某種ID。

Date   Person Action 
01-01-2014 John  Enter 
01-01-2014 lilly Enter 
01-01-2014 lilly Enter 
01-01-2014 bill  Enter 
01-02-2014 bill  Enter 
01-02-2014 lilly Enter 
01-02-2014 bill  Enter 
01-02-2014 John  Enter 
01-02-2014 John  Enter 

我可以做一個查詢給我平均由用戶進行分組在一起,其上運行的計數的平均,但如果我在查詢中指定的日期,只適用。我試圖做一個查詢,將分別運行每個日期的平均值,並給我每個日期的平均值。

SELECT AVG(sub.count1) 
FROM (
SELECT COUNT(*) AS count1, Date AS date1, user FROM table1 WHERE   
date='01-01-2014' GROUP BY user 
) AS sub 

我想結果是什麼

Date   Avgcount 
01-01-2014 1.33 
01-02-2014 1.667 

感謝你的幫助。

回答

2

所以你想要每個人每天的平均參加人數......是嗎?換句話說,條目總數除以進行這些條目的總人數,對嗎?

=#條目/#製作這些條目的人

是嗎?

如果是這樣,下面應該做的伎倆:

SELECT COUNT(*)/COUNT(DISTINCT person) 
FROM table1 
GROUP BY date 
ORDER BY date ASC; 

的COUNT(*)會告訴我每天的條目數。如果您的表格包含「Entry」操作以外的任何內容,則需要添加一個WHERE操作=「Enter」的where子句。但是,除此之外,我們只是將條目總數除以完成條目的人數,按日期總結,然後按ASC順序排序。

+0

太感謝你了,這正是我一直在尋找。沒想到它這麼簡單。 –

1

我想這是你想要的,至少是你想要的結果:

SELECT date1, AVG(sub.count1) 
FROM (
SELECT COUNT(*) AS count1, Date AS date1, user FROM table1 
GROUP BY date1, user 
) AS sub 
GROUP BY date1 
+0

我不認爲這個結果與簡單計數條目的數量和除以唯一人的數量有什麼不同......後者避免了子查詢。你能想到一個反例,其中每個用戶的每日參賽作品的平均分數與總參賽作品的總人數不同,而這些參賽作品的總人數除以製作它們的獨特人物? – evanv

+0

不,evanv的答案更好,因爲它更簡單。 –