Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Agrupando linhas semelhantes próximas umas das outras no MySQL


Você pode fazer isso usando um truque inteligente. O truque é contar o número de descrições até um id específico que são diferentes da descrição nesse id . Para valores em uma sequência, esse número será o mesmo.

No MySQL você pode fazer essa contagem usando uma subconsulta correlacionada. O resto é só agrupar por este campo para juntar os valores:
select min(id) as id, description, count(*) as numCondensed
from (select t.*,
             (select count(*)
              from table t2
              where t2.id <= t.id and t2.description <> t.description
             ) as grp
      from table t
     ) t
group by description, grp;