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

MySQL - Изваждане на стойност от предишния ред, групиране по

Работата с MySQL променливи е страхотна, като присвояването на вградени програмни променливи. Първо, клаузата FROM "декларира" променливите @ вместо вас, като по подразбиране е празно. След това потърсете записите в очаквания ред, в който искате. Той прави еднократно преминаване през данните вместо чрез повтарящи се подзаявки, което може да отнеме много време.

За всеки прочетен ред сравнете @lastSN със SN на текущия запис. Ако е различно, винаги връщайте 0. Ако е същото, изчислете простата разлика. Едва СЛЕД това сравнение е направено, задайте @lastSN и @lastValue равни на тези на текущия запис за следващото сравнение на записи.

select
      EL.SN,
      EL.Date,
      EL.Value, --remove duplicate alias
      if( @lastSN = EL.SN, EL.Value - @lastValue, 0000.00 ) as Consumption,
      @lastSN := EL.SN,
      @lastValue := EL.Value
   from
      EnergyLog EL,
      ( select @lastSN := 0,
               @lastValue := 0 ) SQLVars
   order by
      EL.SN,
      EL.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. Как да получите достъп до обект RowDataPacket

  2. MySQL SELECT само не нулеви стойности

  3. Как да архивирате MySQL бази данни с помощта на AutoMySQLBackup

  4. Дублиране, копиране или архивиране на таблици в MySQL, MariaDB, Oracle, PostgreSQL, DB2 и SQLite със Създаване на таблица като SQL

  5. Как да използвате MySQL с Deno и Oak