2017-11-17 3 views
-1

제품 판매 표MySql - 두 테이블에서 평균 데이터를 가져 오는 방법?

는 많은 제품을 가질 수 있습니다 주문으로 구입 한 모든 단일 항목의 기록을 보유하고있다.

+----+------------+---------+----------+-------+ 
| ID | PAYMENT_ID | PROD_ID | STORE_ID | PRICE | 
+----+------------+---------+----------+-------+ 
| 1 |   1 |  5 |  4 | 3.00 | 
| 2 |   1 |  4 |  4 | 4.00 | 
| 3 |   2 |  3 |  7 | 5.00 | 
| 4 |   3 |  8 |  9 | 10.00 | 
+----+------------+---------+----------+-------+ 

지불 표

는 주문에 대한 지불의 기록을 유지합니다.

+----+-------+------------+----------+ 
| ID | TOTAL | DATE | STORE_ID | 
+----+-------+------------+----------+ 
| 1 | 7.00 | 10/10/2010 |  4 | 
| 2 | 5.00 | 01/07/2011 |  7 | 
| 3 | 10.00 | 20/02/2012 |  9 | 
+----+-------+------------+----------+ 

내가 쿼리 나 많은 판매가 년 특정 상점에 대한 2010/2011/2012에서 평균적으로 매월 (12월에서 1월까지)를 만들었다 어떻게 저를 줄 것이다 함수를 만들 수있는 방법.

는 예를 들어, "저장 4"2011 년, 2010 년 1 월 5 개의 제품을 판매하고 2012 년에 다음 1 월에 해당 저장소의 평균 매출은 내가 노력 5.

것 :

SELECT storeid, paymentdate 
FROM payment_table 
WHERE (YEAR(paymentdate)=2010 OR YEAR(paymentdate)=2011 OR YEAR(paymentdate)=2012) 
    AND (storeid=1) 

이것은 주어진 상점에 대한 모든 지불 날짜를 얻는 것과 별개입니다.

+0

지금까지 해보신 것은 무엇입니까? –

+0

@ stephen.vakil'SELECT storeid, paymentdate FROM payment_table 년 (YEAR (지급일) = 2010 년 또는 YEAR (지급 예정) = 2011 년 또는 YEAR (지급 예정) = 2012) AND (storeid = 1)' 주어진 상점에 대한 모든 지불 날짜를 받으십시오. – HoldTight

+0

테이블에 가입 한 다음 각 달의 카운트를 얻으려면'COUNT (*)'와'GROUP BY YEAR (MONTH) '를 사용하십시오. 그것을 하위 쿼리에 넣고'AVG (count) '와'GROUP BY month'을 사용하십시오. – Barmar

답변

1

각 기간의 판매 개수를 확인하려면 테이블을 조인해야합니다. 서브 쿼리에 넣으면 월별로 재 그룹화 할 수 있습니다.

SELECT month, AVG(sales) AS avg_sales 
FROM (SELECT MONTH(paymentdate) AS month, YEAR(paymentdate) AS year, COUNT(*) AS sales 
     FROM payment_table AS pay 
     JOIN products_sold_table AS prod ON pay.id = prod.payment_id AND pay.store_id = prod.store_id 
     WHERE YEAR(paymentdate) IN (2010, 2011, 2012) AND pay.store_id = 1 
     GROUP BY month, year 
) AS x 
GROUP BY month 
+0

답장을 편집하여 둘 이상의 상점이 있으므로 지정된 상점의 데이터를 반환 할 수 있습니까? 그리고 당신은'COUNT (*) AS 판매'를 가지고 있음을 알았습니다. 어떻게이 가격의 합계가 아닌 판매 된 제품의 합으로 대체 될 수 있습니까? – HoldTight

+0

그것은 가격의 합계가 아니라, 조인 된 테이블의 행 수입니다. – Barmar

+0

가격 합계는'SUM (price)' – Barmar

관련 문제