sql >> Database >  >> RDS >> Mysql

Trek de waarden van twee rijen binnen dezelfde kolom af met Mysql-groep op ID

Uw datums zijn onjuist. Wanneer u bestelt via deze kolom, bestelt u eerst per dag. De juiste volgorde is jaar-maand-dag. Gebruik het juiste datatype, datetime of timestamp. Om dit te doen kunt u het volgende doen:

alter table table1 add column d datetime;
update table1 set d = str_to_date(`Date`, '%d-%m-%Y %H:%i');
alter table table1 drop column `Date`;

De vraag om het gewenste resultaat te krijgen is dan:

SELECT ID, d, Value,
       IF(@ID=ID, Value - @prevV, 'N/A') AS diff,
       @row_number:=CASE WHEN @ID=ID THEN @row_number+1 ELSE 1 END AS row_number,

       @prevV := Value,
       @ID:=ID AS ID
FROM table1
, (SELECT @row_number:=0, @ID:='', @prevV := NULL) AS t 
ORDER BY id, d;

Het enige wat je hoeft te doen is nog een variabele toe te voegen om de waarde van de vorige rij te behouden.




  1. Oracle - Welk TNS Names-bestand gebruik ik?

  2. Oracle-nummer en varchar-join

  3. Verbinding van MySQL met PHP werkt niet

  4. Oracle-beveiligingswaarschuwing voor CVE-2021-44228