2009-10-17 4 views
1

소스 테이블의 부분합을 포함하는 결과를 얻기 위해 MySQL 데이터베이스에서 어떤 쿼리를 실행해야합니까? 나는 커서 동안을 포함하는 저장 프로 시저로이 결과를 얻을 지금부분 합계를 계산하는 MySQL 쿼리

Id|Val 
1 | 1 
2 | 3 # 1+2 
3 | 6 # 1+2+3 
4 | 10 # 1+2+3+4 

을 :

Id|Val 
1 | 1 
2 | 2 
3 | 3 
4 | 4 

는이 같은 결과를 얻을 싶습니다 나는 테이블이 예를 들어

루프. 나는 이것을하는 더 좋은 방법을 찾고 싶다.

답변

3

테이블 자체를 결합하여이 작업을 수행 할 수 있습니다. 합이 행에 모든 행을 추가 할 것입니다 :

select cur.id, sum(prev.val) 
from TheTable cur 
left join TheTable prev 
    on cur.id >= prev.id 
group by cur.id 
MySQL은 또한 해킹의 뭔가 더 효율적하지만 생각입니다이를 계산하는 사용자 변수의 사용을 허용

:

select 
    id 
, @running_total := @running_total + val AS RunningTotal 
from TheTable 
0
SELECT l.Id, SUM(r.Val) AS Val 
FROM your_table AS l 
    INNER JOIN your_table AS r 
     ON l.Val >= r.Val 
GROUP BY l.Id 
ORDER By l.Id 
관련 문제