Расчет ежедневных объемов из общего объема

#mysql #sql #heidisql

Вопрос:

У меня есть следующие данные:

ID Дата Весь
A 2021-09-03 0
A 2021-09-04 12
A 2021-09-05 37
A 2021-09-06 40
B 2021-08-03 20
B 2021-08-04 43
B 2021-08-05 75

И из этих данных я хотел бы получить следующую таблицу:

ID Дата Весь Ежедневный
A 2021-09-03 0 0
A 2021-09-04 12 12
A 2021-09-05 37 25
A 2021-09-06 40 3
B 2021-08-03 20 20
B 2021-08-04 43 23
B 2021-08-05 75 32

Я попробовал следующий код, но я получаю много дубликатов:

 CREATE TABLE table_b AS ( SELECT a.ID, a.Date, a.Total, a.Total - coalesce(b.Total, 0) AS Daily FROM table_a a left outer JOIN table_a b ON (a.ID = b.ID AND b.Date lt; a.Date));  

Заранее спасибо:)

Комментарии:

1. и является ли table_b секретом ?

2. Нет? Это таблица, созданная с помощью прилагаемого кода, но я бы хотел, чтобы она была такой, как я показал в описании.

3. вы присоединяетесь к table_b и пытаетесь создать table_b, который не работает в mysql, поэтому внутренняя table_b должна существовать до запуска кода, пожалуйста, исправьте запрос, так как то, что вы пытаетесь вычесть, не имеет смысла

4. Ах, моя беда, это была опечатка. Теперь это исправлено.

5. таблица является ограниченным словом и не может быть использована в запросе, поэтому вы пытаетесь сгенерировать текущую сумму?

Ответ №1:

 SELECT *,  Total - COALESCE(LAG(Total) OVER (PARTITION BY id ORDER BY `date`), 0) Daily FROM src_table