sql >> Base de Datos >  >> RDS >> Mysql

agrupar por primera y última ocurrencia

Puede utilizar la siguiente consulta:

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

La consulta anterior utiliza variables para identificar islas de registros consecutivos que tengan el mismo browser valor. Devuelve una sola fila por navegador. Debe repetir la misma subconsulta dos veces y usar UNION si quieres conseguir dos líneas separadas para cada una de las fechas mínimas/máximas.

Demostración aquí