Вопрос от первоклассника в SQL
Финансовая таблица. В таблице дата, сумма, тип.
Нужно получить баланс нарастающим итогом на каждый день.
Проблема в том, что сумма всегда положительная, расходная транзакция только от типа зависит (приход: 3,6. расход 2,5)
Есть вот такой вариант
WITH day_out AS (
SELECT DATE(datePay) AS day_out, SUM(amount) AS amount
FROM money
WHERE payType IN (2,3,6)
GROUP BY DATE(datePay)
),
day_in AS (
SELECT DATE(datePay) AS day_in, SUM(amount) AS amount
FROM money
WHERE payType IN (9,4,5)
GROUP BY DATE(datePay)
)
SELECT day_out, SUM(day_out.amount) OVER (ORDER BY day_out) AS balance_out
FROM day_out
Если добавлю в выборку day_in, то запрос зацикливается. А нужно еще и выборку за период делать, но считать-то итог все равно с самой первой записи. И, по-хорошему, еще и с разбивкой по запросу по дням/неделям/месяцам/годам.
Сможете помочь? Третий день экспериментирую. Не хватает знаний.