Текущая сумма выводит неправильный порядок

Мне нужна текущая сумма моих таблиц, где я написал свой код, но не могу заставить его работать.

Это то, что я получаю

Это то, что мне нужно

это мой код

SELECT 
id,
date
saldo,
cast(sum(saldo) over (order by date ROWS UNBOUNDED PRECEDING) as float) as running_Total

FROM orders

order by date desc;

Я просто не могу понять, что не так. Я искал в Интернете в течение нескольких часов. У меня также есть проблемы с перемещением десятичных знаков и запятых в нужные места.

Спасибо!

(1) Пожалуйста, укажите в своем вопросе базу данных, с которой вы работаете: mysql, oracle, postgresql...? (2) Что такое тип данных столбца saldo?

GMB 10.12.2020 20:34

Я проверил свой код на некоторых других данных, и он сработал. Есть какая-то проблема с данными, которые мне нужно выяснить.

Kasper 10.12.2020 20:46
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
82
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам не нужно ничего, кроме упорядочения по дате по убыванию для оператора SELECT, такого как

SELECT id, date, saldo,
       SUM(saldo) OVER (ORDER BY date ROWS UNBOUNDED PRECEDING) AS running_Total
FROM orders
ORDER BY date DESC

Demo

Спасибо за ваш ответ. Вы правы, мне нужно добавить свои заказы в desc.

Kasper 11.12.2020 11:06

Могу я задать вам вопрос вдогонку? Я попробовал код на некоторых других данных, и он работал как надо, также добавив дату desc. Однако я думаю, что он выводит значения в виде строк. Как будет выглядеть код, если мне нужно, чтобы выходное значение было отформатировано как число? Спасибо!

Kasper 11.12.2020 12:02

какая у вас СУБД, и можете ли вы поделиться своими усилиями в демоверсии, например, по ссылке в ответе? Кстати, это тип данных столбца date строка (или подобная строка, такая как varchar, varchar2) @Kasper?

Barbaros Özhan 11.12.2020 12:16

Конечно! Я изменил свой код и добавил свои изменения для форматирования. Я использую mysql, и дата форматируется как дата. В принципе, мне нужно такое же форматирование, как и в Saldo. Должен ли я указать, каким должен быть десятичный знак?

Kasper 11.12.2020 12:44

Я нашел решение! Спасибо за помощь!

Kasper 11.12.2020 12:54

Я подозреваю, что на самом деле у вас есть несколько id в ваших данных, и вам нужен partition by:

SELECT id, date saldo,
       sum(saldo) over (partition by id order by date ROWS UNBOUNDED PRECEDING) as running_Total
FROM orders
ORDER BY id, date;

Да, это тоже было бы хорошей идеей. Спасибо за ваш ответ!

Kasper 11.12.2020 11:06

Другие вопросы по теме