Mysql
 sql >> база данни >  >> RDS >> Mysql

Изчисление на Mysql в изявление за избор

Най-общо казано, SQL всъщност не е предназначен да дава "текущи суми", както желаете. Други RDBMS са въвели собствени разширения за предоставяне на аналитични функции, които позволяват изчисления от този вид, но MySQL няма такива функции.

Вместо това едно общо взето има четири опции. В никакъв конкретен ред:

  1. Натрупвайте текуща сума във вашето приложение, докато преглеждате набора от резултати;

  2. Променете схемата си, за да следите текущата сума във вашата база данни (особено добре в ситуации като тази, когато новите данни винаги се добавят само „до края“);

  3. Групирайте самостоятелно присъединяване:

    SELECT   a.Sale_Date,
             SUM(a.Stock_Delivered)                AS Stock_Delivered,
             SUM(a.Units_Sold)                     AS Units_Sold,
             SUM(b.Stock_Delivered - b.Units_Sold) AS `Stock Balance`
    FROM     sales_report a
        JOIN sales_report b ON b.Sale_Date <= a.Sale_Date
    GROUP BY a.Sale_Date
    
  4. Натрупване на текущата сума в потребителска променлива :

    SELECT   Sale_Date,
             Stock_Delivered,
             Units_Sold,
             @t := @t + Stock_Delivered - Units_Sold AS `Stock Balance`
    FROM     sales_report, (SELECT @t:=0) init
    ORDER BY Sale_Date
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Дизайн на база данни:Множество таблици срещу една таблица

  2. Magento:Добавете атрибути на продукта със скрипт за инсталиране на модул

  3. Не мога да инсталирам разширението php-mysqli на Centos

  4. изберете агрегатна функция и всички други колони

  5. Десетичните полета на MySQL, върнати като низове в PHP