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

MySQL vrátí první a poslední záznam pro po sobě jdoucí identické výsledky

Nejjednodušší způsob, jak k tomu přistoupit, je pomocí proměnných a myslím, že nejjednodušším přístupem je přidat dvě proměnné, jednu s počtem "nahoře" a druhou s počtem "dolů" nahoru k danému řádku. Daná sekvence vzestupů má konstantní hodnotu pro počet předcházejících „dolů“ a naopak. Tuto logiku lze použít pro agregaci.

Výsledný dotaz je:

select result, min(time_stamp) as start_time, max(time_stamp) as end_time
from (select r.*,
             (@ups := @ups + (result = 'up')) as ups,
             (@downs := @downs + (result = 'down')) as downs
      from results r cross join
           (select @ups := 0, @downs := 0) vars
      where service_id = 1
      order by time_stamp
     ) r
group by result, (case when result = 'up' then downs else ups end);



  1. SQL MEZI – chytré tipy pro vyhledávání řady hodnot

  2. Můžeme provádět SQL dotazy v JQuery

  3. Ukládání konkrétních hodnot data/času pro uživatele v různých časových pásmech

  4. Pochopení uváznutí v MySQL a PostgreSQL