sql >> Databasteknik >  >> RDS >> Mysql

Hur man grupperar kontinuerliga intervall med MySQL

MySQL stöder inte analytiska funktioner, men du kan emulera sådant beteende med användare- definierade variabler :

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

Se den på sqlfiddle .



  1. ClusterControl 1.5 - Automatisk verifiering av säkerhetskopiering, bygg slav från säkerhetskopiering och molnintegrering

  2. Inkrementell datamaskering och mappning:Upptäcker ändringar och uppdaterar...

  3. PostgreSQL 9.3:Dynamisk pivottabell

  4. Kommer GETUTCDATE() att returnera samma värde om det används två gånger i samma programsats?