2010-06-07 189 views
5

我在創建一個給我平均值的查詢時遇到了一些問題。我在這裏閱讀了幾個例子,並且無法做到。任何人都可以幫助我理解如何做到這一點嗎?這是我的數據:Mysql查詢中求和的平均值

Transaction_x0020_Number Product_x0020_Code Sales_x0020_Value Date  Cashier 
000356     350     24.99    2010-06-04 131  
000356     726     32.99    2010-06-04 131  
000357     350     24.99    2010-06-04 131  
000358     350     24.99    2010-06-04 131  
000358     360     24.99    2010-06-04 131  
000770     703     69.99    2010-06-04 130  
000771     726     32.99    2010-06-04 130  
000772     1126    5     2010-06-04 130  
000773     482     32.99    2010-06-04 130  
000774     600     32.99    2010-06-04 130  
000775     350     24.99    2010-06-04 130  

基本上我需要收銀員的平均交易價值。我無法運行基本平均值,因爲它會佔用所有行,但每個事務可以有多行。最後我想要:

Cashier| Average| 
131 | 44.31 |(Which comes from the sum divided by 3 transactions not 5 rows) 
130 | 33.15 | 
etc. 

這是查詢我必須SUM事務,但不知道如何或在哪裏包括AVG功能。

SELECT `products`.`Transaction_x0020_Number`, 
     Sum(`products`.`Sales_x0020_Value`) AS `SUM of Sales_x0020_Value`, 
     `products`.`Cashier` 
    FROM `products` 
GROUP BY `products`.`Transaction_x0020_Number`, `products`.`Date`, `products`.`Cashier` 
    HAVING (`products`.`Date` ={d'2010-06-04'}) 

任何幫助表示讚賞。

回答

14
SELECT Cashier, 
     Sum(Sales_x0020_Value)/COUNT(DISTINCT Transaction_x0020_Number) AS 'avg' 
FROM products 
WHERE Date = {d'2010-06-04'} 
GROUP BY Cashier 
+0

啊,8秒鐘之前,刪除我的(雖然我不記得在MySQL上的d {}語法?)。如果事實確實是平均的,則無需知道交易金額。 – Wrikken 2010-06-07 19:39:04

+1

在旁註:最好的解決方案,但爲什麼要複製HAVING子句,而不僅僅是應該使用的WHERE? – Wrikken 2010-06-07 19:48:24

+0

+1這個作品。尼斯解決方案,如果HAVING是固定的。 – 2010-06-07 19:48:59

-3

這是我知道的最簡單的方法。

SELECT answers, AVG(score) 
FROM tests