sql >> Database >  >> RDS >> Mysql

Doorlopende bereiken groeperen met MySQL

MySQL ondersteunt geen analytische functies, maar u kunt dergelijk gedrag emuleren met user- gedefinieerde variabelen :

SELECT   CatID, Begin, MAX(Date) AS End, Rate
FROM (
  SELECT   my_table.*,
           @f:=CONVERT(
             IF(@c<=>CatId AND @r<=>Rate AND DATEDIFF(Date, @d)=1, @f, Date), DATE
           ) AS Begin,
           @c:=CatId, @d:=Date, @r:=Rate
  FROM     my_table JOIN (SELECT @c:=NULL) AS init
  ORDER BY CatId, Rate, Date
) AS t
GROUP BY CatID, Begin, Rate

Bekijk het op sqlfiddle .



  1. Tel het aantal voorkomens van een string in een VARCHAR-veld?

  2. Hoe groeipercentage van maand tot maand te berekenen in MySQL

  3. MySQL haalt string(s) op tussen twee # / meerdere paren van #

  4. Automatisch uitzonderingen opvangen voor PDO in PHP