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

grupuj według pierwszego i ostatniego wystąpienia

Możesz użyć następującego zapytania:

SELECT MIN(current_day) AS start_day, 
       MAX(current_day) AS stop_day, 
       browser
FROM (
   SELECT current_day, browser,
          @grp := IF(@br = browser, @grp,
                     IF(@br := browser, @grp+1, @grp+1)) AS grp
   FROM mytable 
   CROSS JOIN (SELECT @grp := 0, @br := '') AS vars
   ORDER BY current_day) AS t
GROUP BY browser, grp

Powyższe zapytanie używa zmiennych w celu zidentyfikowania wysp kolejnych rekordów mających tę samą browser wartość. Zwraca jeden wiersz na przeglądarkę. Musisz dwukrotnie powtórzyć to samo podzapytanie i użyć UNION jeśli chcesz dostać dwa oddzielne wiersze dla każdej z dat min/maks.

Pokaz tutaj



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jeśli tabela istnieje, upuść tabelę, utwórz ją, jeśli nie istnieje, po prostu ją utwórz

  2. Zmień hasło mysql w kontenerze Docker

  3. AKTUALIZUJ za pomocą SUM() w MySQL

  4. mysql GROUP_CONCAT DISTINCT wiele kolumn

  5. BŁĄD 1356 (HY000):Widok 'mysql.user' odwołuje się do nieprawidłowych tabel lub kolumn lub funkcji lub definiującego/wywołującego widok nie ma uprawnień do ich używania