sql >> Database >  >> RDS >> Mysql

groeperen op eerste en laatste keer

U kunt de volgende zoekopdracht gebruiken:

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

De bovenstaande query gebruikt variabelen om eilanden van opeenvolgende records met dezelfde browser te identificeren waarde. Het retourneert een enkele rij per browser. U moet dezelfde subquery twee keer herhalen en UNION gebruiken als je twee wilt krijgen aparte regels voor elk van de min/max data.

Demo hier



  1. SQL-functie erg traag in vergelijking met query zonder functie-wrapper

  2. PostgreSQL implementeren op een Docker-container

  3. Python mySQL - aanhalingstekens ontsnappen

  4. MySQL-database onder versiebeheer zetten?