2014-07-21 6 views
0

내 데이터의 누적 평균을 계산하고 싶습니다.누적 평균 계산 방법

내 쿼리에서 나는 지금 모든 날짜에 대한 합계 값을 얻습니다.하지만 혼란 스러워요. 누적 평균 계산 방법.

내 쿼리

다음
SELECT 
    u.id, 
    (SUM(m.protein)), 
    DATE(FROM_UNIXTIME(u.create)) AS Cdate, 
    goal.what, 
    goal.value 
FROM 
    `meal` AS m, 
    `user_history` AS u 
LEFT JOIN goal 
    ON goal.what = 'Protein' 
    AND goal.user_id = 48 
WHERE u.meal_id = m.id 
    AND u.user_id = 48 
GROUP BY DATE(FROM_UNIXTIME(u.create)) 

내가 sum(m.protein)에 의해 합계 값을 얻을하지만 난,

+0

평균 우리가 일부 샘플 시작 데이터와 원하는 결과를 얻을 수 누적 여기하시기 바랍니다 싶어? 하루에 누적하고 싶습니까? 합계의 평균 또는 개별 '단백질'값의 평균을 원하십니까? 이전 스타일과 새로운 스타일의 조인을 섞어서 사용하면 안된다 (새로운 스타일, 즉'JOIN' 절을 사용). 함수를 사용하기 때문에 쿼리는'create'를 포함하는 인덱스 부분을 사용할 수 없습니다 - 범위 테이블을 정의 할 수 있으면 쿼리가 더 효율적일 수 있습니다. GROUP BY/집계 함수에없는 컬럼을 사용하면 결과가 미묘하게 틀릴 수 있습니다. 먼저 롤업해야합니까? –

답변

0
SET @csum=0; 
SELECT 
    u.id, 
    (SUM(m.protein)) as sum1, 
    (@csum := @csum + sum1) as CSUM, 
    DATE(FROM_UNIXTIME(u.create)) AS Cdate, 
    goal.what, 
    goal.value 
FROM 
    `meal` AS m, 
    `user_history` AS u 
LEFT JOIN goal 
    ON goal.what = 'Protein' 
    AND goal.user_id = 48 
WHERE u.meal_id = m.id 
    AND u.user_id = 48 
GROUP BY DATE(FROM_UNIXTIME(u.create)) 
+0

평균은 어디에서 계산됩니까? –

+0

그것은 mysql과 작동합니까? 오류가 발생했습니다. '필드 목록'에서 알 수없는 'sum'열 – user3832367

+0

예, mysql에서 작동했습니다. sum은 예약어 – Sadikhasan