MySql Частичные суммы

0

Мне нужна помощь для суммирования каждого значения, где код такой же, это мои данные

OFFICECODE | DATE | VAL
10200 | 2018-05-01 | 1
10200 | 2018-05-02 | 2
10100 | 2018-05-01 | 3
10100 | 2018-05-02 | 2

я хочу получить этот результат

OFFICECODE | DATE | SUM(VAL) 
10200 | 2018-05-01 | 1
10200 | 2018-05-02 | 3 (1+2)
10100 | 2018-05-01 | 3
10100 | 2018-05-02 | 5 (3+2)

Я пробую этот запрос, но результат суммирует все OFFICECODE

SELECT
      A.OFFICELKD,
      A.DATE,
      A.VAL,
      @VAL := @VAL + A.VAL AS 'VALSUM'
   FROM 
      ( SELECT
              cur.OFFICELKD,
              cur.DATE,
              cur.VAL
           FROM
              tblReport cur
           LEFT JOIN 
          tblReport pre
       ON cur.OFFICECODE = pre.OFFICECODE
       GROUP BY cur.ID
           ORDER BY
              OFFICECODE ) AS A,
      ( SELECT @VAL := 0 ) AS SqlA
   ORDER BY OFFICECODE, DATE

пожалуйста, помогите мне исправить это

Теги:
optimization

1 ответ

1
Лучший ответ

Вы близки. Вы должны учитывать OFFICECODE:

SELECT r.*,
       (@val := if(@o = r.OFFICECODE, @val + a.val,
                   if(@o := r.OFFICECODE, a.val, a.val)
                  )
       ) as valsum
FROM (SELECT r.*
      FROM tblReport r 
      ORDER BY OFFICECODE, DATE
     ) r CROSS JOIN
     ( SELECT @o := -1, @VAL := 0 ) params;
  • 0
    спасибо, это работа

Ещё вопросы

Сообщество Overcoder
Наверх
Меню