Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL zwraca pierwszy i ostatni rekord dla kolejnych identycznych wyników

Najłatwiejszym sposobem podejścia do tego jest użycie zmiennych i myślę, że najłatwiejszym podejściem jest dodanie dwóch zmiennych, jednej liczby „w górę”, a drugiej liczby „w dół” w danym wierszu. Dana sekwencja wzlotów ma stałą wartość liczby poprzedzających „w dół” i na odwrót. Ta logika może być używana do agregacji.

Wynikowe zapytanie to:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Raporty MySQL Workbench nie są prawidłowe w tej pozycji dla tego błędu wersji serwera

  2. Ile tekstu UTF-8 mieści się w polu tekstowym MySQL?

  3. Jak naprawić typowe problemy z bazą danych MySQL?

  4. Grupuj wiele wyników mysql według wartości jednej kolumny

  5. tworzenie liczby losowej za pomocą MYSQL