Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да групирате непрекъснати диапазони с MySQL

MySQL не поддържа аналитични функции, но можете да емулирате подобно поведение с user- дефинирани променливи :

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

Вижте го на 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. Snow Leopard + Ruby 1.9.1 + MySQL Gem =Огромни проблеми

  2. Как да проверя дали два периода от време се припокриват в mysql?

  3. Втора заявка SELECT, ако първата SELECT връща 0 реда

  4. Как да вмъкна множество масиви в база данни?

  5. Внедряване и проектиране на архитектура за система за уведомяване с помощта на socket.io node.js и входящи съобщения