2010-06-07 23 views
5

Tengo problemas para crear una consulta que me proporcione el promedio de una suma. Leí algunos ejemplos aquí en stackoverflow y no pude hacerlo. ¿Alguien puede ayudarme a entender cómo hacer esto, por favor? Esta es la información que tengo:Promedio de una suma en la consulta 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  

Básicamente necesito el valor de transacción promedio por cajero. No puedo ejecutar un avg básico porque tomará todas las filas, pero cada transacción puede tener múltiples filas. Al final quiero tener:

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

Esta es la pregunta que tengo que sumar las transacciones, pero no saben cómo o dónde incluir la función 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'}) 

cualquier ayuda se agradece.

Respuesta

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

Ah, 8 segundos antes, eliminado el mío (aunque no recuerdo una sintaxis d {} en MySQL?). no hay necesidad de saber el monto de una transacción si se va a promediar de hecho. – Wrikken

+1

En una nota al margen: la mejor solución, pero ¿por qué copiar la cláusula HAVING, en lugar de simplemente DONDE se debe usar? – Wrikken

+0

+1 esto funciona. Buena solución si el HAVING está arreglado. –

-3

Esta es la manera más simple que conozco.

SELECT answers, AVG(score) 
FROM tests 
Cuestiones relacionadas