sql >> Database teknologi >  >> RDS >> Mysql

grupper efter første og sidste forekomst

Du kan bruge følgende forespørgsel:

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

Ovenstående forespørgsel bruger variabler for at identificere øer af på hinanden følgende poster med den samme browser værdi. Den returnerer en enkelt række pr. browser. Du skal gentage den samme underforespørgsel to gange og bruge UNION hvis du vil have to separate linjer for hver af min/max datoerne.

Demo her



  1. SQL Server 2005 Pivot på ukendt antal kolonner

  2. Fundamentals of Table Expressions, Del 12 – Inline Table-Valued Functions

  3. Database høj tilgængelighed for Camunda BPM ved hjælp af MySQL eller MariaDB Galera Cluster

  4. Brugerkontostyring, roller, tilladelser, autentificering PHP og MySQL