2012-08-08 133 views
0

我有表等SQL計數平均

id  userid semid courseid coursename total 
1  36  17  13  CA   23 
2  36  17  5  CB   46   
3  36  17  8  CC   20 
4  36  19  16  CD   34 
5  36  19  13  CA   31 
6  36  19  3  CA#  29 
7  36  19  7  CE   60 
8  36  10  9  CK   32 
9  36  10  15  CH   56  

我需要semid的平均輸入用戶名字,即,SUM(courseid)/數(的moduleId),它被示出9作爲模塊計數,但我只有3模塊。 這是我的查詢

SELECT userid, SUM(total)/count(semid) FROM custom WHERE userid=36 
+0

9從'count'返回行數,並且不計算該列的唯一值的數量(假設您正在對特定示例運行查詢...否則我不確定在哪裏9將來自 – MxyL 2012-08-08 08:03:38

+1

count(semid)給你9,因爲有9行爲36,如果你需要不同的semid,使用關鍵字「distinct」 – Kamal 2012-08-08 08:05:51

回答

0
SELECT userid, SUM(total)/count(distinct semid) FROM custom WHERE userid=36 

嘗試此查詢

+0

謝謝你,它的工作 – ronquiq 2012-08-08 08:32:17

2

只需使用AVG()功能

SELECT userid, semid, AVG(total) 
FROM  custom 
WHERE userid = 36 
GROUP BY userid, semid 

SQLFiddle Demo

+0

他不是在尋找AVG的總數,而是AVERAGE爲不同的semId。您的查詢可能會導致他在問題中的錯誤迴應。 – sundar 2012-08-08 08:38:43

+0

我很驚訝2+這個答案的投票? :) – sundar 2012-08-08 08:44:22

+0

這是因爲OP不清楚他的問題。他沒有提供確切的信息,他所做的只是提供他所用的查詢。您是如何理解「Count Average」這個標題的? :) – 2012-08-08 08:48:57

0

有MYSQL聚合函數AVG()查找平均。 @John Totet Woo發佈了答案。