2017-10-03 10 views
0
I는 아래 표이 각 레코드에 대한 증대 값을 계산하고자

(table_values)카운트 누적 증가/[MYSQL]

id | open | closed | in_progress | project | 
    1 | 0 | 0  | 0   | 20  | 
    2 | 1 | 0  | 1   | 20  | 
    3 | 1 | 1  | 1   | 55  | 
    4 | 1 | 1  | 1   | 20  | 
    5 | 1 | 1  | 1   | 20  | 
    6 | 2 | 2  | 0   | 20  | 

그래서, 예를 들어 여기서 프로젝트 = 20 개 결과를 선택 가능하면 각 ID에 대해 누적 결과를 반환해야합니다. 선택은 가능한 경우 각 누적 결과를 반환해야합니다 :

id | open | closed | in_progress | project | Total | 
1 | 0 | 0  | 0   | 20  | 0 | 
2 | 1 | 0  | 1   | 20  | 2 | 
4 | 2 | 1  | 2   | 20  | 3 | 
5 | 3 | 2  | 3   | 20  | 3 | 
6 | 5 | 4  | 3   | 20  | 4 | 

제안 사항이 있으십니까?

감사합니다.

UPDATE : 표 :

id | open | 
    1 | 2 | 
    2 | 3 | 
    3 | 5 | 

결과 :

id | open | cumulative_open 
    1 | 2 | 2 
    2 | 3 | 5 
    3 | 5 | 10 
+1

분석을위한 정보가 거의 없습니다. – soft87

+0

제 생각에는 왜 이것을하고 싶은지, 어떤 종류의 플랫폼인지, 그리고 지금까지 시도한 것을 말해주십시오. –

답변

1

이 방법은 매개 변수를 사용하고 기술 한 내용을 달성하기 위해 보인다. 일부는 아마 조금 적합하지 않다으로 (그들은이 예약 된 이름으로 끝났로) 당신은

SET @open = 0; 
SET @closed = 0; 
SET @in_progress = 0; 
select 
id, 
(@open := @open + open) as open, 
(@closed := @closed + closed) as closed, 
(@in_progress := @in_progress + in_progress) as in_progress, 
project, 
(open + closed + in_progress) as Total 
FROM table_values 
where project = 20 
group by id; 
+1

참고 : 사용자 정의 변수가있는이 패턴은 보장되지 않는 동작에 따라 달라집니다. MySQL 레퍼런스 매뉴얼에서 : "일반적으로 SET 문과는 다른, 사용자 변수에 값을 지정해서는 안되며 같은 명령문 내에서 값을 읽지 말아야한다. 보장되지 않습니다. " 참고 : https://dev.mysql.com/doc/refman/5.7/en/user-variables.html – spencer7593

+0

이 인스턴스에서는 취약점으로 보지 않습니다. 변수가 설정되어있는 작업 외부에서 변수가 "선택"되지 않아 주문 문제가 없습니다. –

+0

왜'group by'과'sum'을 사용하고 있습니까? 하루 종말 증후군의 만료 –

2

당신은에서 행 (동일 포함) 모든 이전에 행을 가입 할 수 있습니다,하지만, 이름을 수정 할 수 있습니다 같은 프로젝트 및 사용 SUM() :

select t1.id, 
    sum(t2.open) as open, 
    sum(t2.closed) as closed, 
    sum(t2.in_progress) as in_progress, 
    t1.project, 
    t1.open + t1.closed + t1.in_progress as Total 
from table_values t1 
join table_values t2 
    on t2.project = t1.project 
    and t2.id <= t1.id 
where t1.project = 20 
group by t1.id 

데모 : http://rextester.com/NZDN42998

이 (성능면에서) 비싼 쿼리를 -하지만 적어도 그것은 믿을입니다.

+0

너는 놀랍다 :) –