Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Oblicz saldo za pomocą mysql

Krótka odpowiedź, tak

Dłuższa odpowiedź, możesz użyć zmiennej, aby ją zsumować podczas iteracji w dół wierszy, tj.

SELECT 
    `table`.`ID`,
    `table`.`In`,
    `table`.`Out`,
    @Balance := @Balance + `table`.`In` - `table`.`Out` AS `Balance`
FROM `table`, (SELECT @Balance := 0) AS variableInit
ORDER BY `table`.`ID` ASC

, (SELECT @Balance := 0) AS variableInit zapewnia, że ​​@Balance jest inicjowane na 0 przed rozpoczęciem. Dla każdego wiersza ustawia następnie @Balance na @Balance + In - Out , a następnie wyświetla obliczoną wartość.

Warto również upewnić się, że ZAMÓWIENIE jest spójne, ponieważ w przeciwnym razie Saldo będzie się różnić w zależności od kolejności zwracania wierszy. Jeśli chcesz, na przykład, uporządkować je z powrotem do przodu, możesz użyć tego jako podzapytania, ponieważ wtedy zewnętrzne zapytanie zajmuje się obliczonymi wartościami, zapewniając w ten sposób poprawność salda, tj.

SELECT
    `balanceCalculation`.`ID`,
    `balanceCalculation`.`In`,
    `balanceCalculation`.`Out`,
    `balanceCalculation`.`Balance`
FROM (
    SELECT 
        `table`.`ID`,
        `table`.`In`,
        `table`.`Out`,
        @Balance := @Balance + `table`.`In` - `table`.`Out` AS `Balance`
    FROM `table`, (SELECT @Balance := 0) AS variableInit
    ORDER BY `table`.`ID` ASC
) AS `balanceCalculation`
ORDER BY `balanceCalculation`.`ID` DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL, aby uzyskać wartości kolumn, które odpowiadają wartości MAX innej kolumny?

  2. Dynamiczne połączone pole wyboru

  3. Nie można połączyć się z MySQL Workbench na Macu. Nie można połączyć się z serwerem MySQL na „127.0.0.1” (61) Mac Macintosh

  4. Procedura składowana mysql jest 20 razy wolniejsza niż standardowe zapytanie

  5. Oblicz sumę bieżącą w MySQL