Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak pogrupować ciągłe zakresy za pomocą MySQL

MySQL nie obsługuje funkcji analitycznych, ale możesz emulować takie zachowanie za pomocą user- zdefiniowane zmienne :

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

Zobacz go na sqlfiddle .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz sumę kolumny MySQL w PHP

  2. Pythona „float64” nie można przekonwertować na typ MySQL, ale w ręcznym zapytaniu nie stanowi to problemu

  3. Czy timestampdiff() w MySQL jest odpowiednikiem datediff() w SQL Server?

  4. Wyczyść dane w tabeli MySQL za pomocą PHP?

  5. Mysql - wybierz identyfikatory pasujące do wszystkich tagów