2010-06-07 5 views
5

평균 합계를 제공하는 쿼리를 만드는 데 문제가 있습니다. 나는 stackoverflow에서 몇 가지 예제를 읽고 그것을 할 수 없었다. 아무도 내가 어떻게이 일을 이해할 수 있도록 도와 줄 수 있습니까? 이 데이터는 내가 가지고있는 데이터입니다.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  

기본적으로 평균 거래 금액은 계산원이 필요합니다. 모든 행을 차지하지만 각 트랜잭션은 여러 행을 가질 수 있기 때문에 기본 평균을 실행할 수 없습니다. 마지막으로 갖고 싶은 :

이것은 트랜잭션을 합산해야하지만 실제로 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

+1

사이드 노트 : 최상의 솔루션이지만 왜 사용해야하는 대신 HAVING 절을 복사해야합니까? – Wrikken

+0

+1이 작동합니다. HAVING이 수정 된 경우 좋은 솔루션입니다. –

-3

이것은 내가 아는 가장 간단한 방법입니다.