sql >> Databáze >  >> RDS >> Mysql

Výpočet mysql v příkazu select

Obecně řečeno, SQL nebylo ve skutečnosti zamýšleno k získání „průběžných součtů“, jak si přejete. Jiné RDBMS zavedly proprietární rozšíření pro poskytování analytických funkcí, které umožňují výpočty tohoto druhu, ale MySQL takové funkce postrádá.

Místo toho má člověk v podstatě čtyři možnosti. V žádném konkrétním pořadí:

  1. Akumulujte průběžný součet ve vaší aplikaci, když procházíte sadou výsledků;

  2. Upravte své schéma tak, abyste sledovali průběžný součet v databázi (obzvláště dobré v situacích, jako je tato, kdy se nová data připojují pouze "na konec");

  3. Seskupit vlastní připojení:

    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. Nashromáždit průběžný součet v uživatelské proměnné :

    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. Rozdělení databázové tabulky v MySQL

  2. Analyzujte výchozí hodnoty parametrů pomocí prostředí PowerShell – část 1

  3. Jak bezpečné je ověřování v protokolu mysql?

  4. Cíle MySQL v pracovním postupu Luigi