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

MySQL:Брой записи с последователни месеци

Можете да направите това в MySQL, като използвате променливи (или много сложни корелирани подзаявки). В други бази данни бихте използвали прозоречни/аналитични функции.

Логиката е:

  1. Вземете един ред на месец и човек с покупка.
  2. Използвайте променливи, за да присвоите на всяка група от последователни месеци стойност за „групиране“.
  3. Агрегиране по лицето и стойността за „групиране“.

Ето една заявка, която е тествана на вашата SQL Fiddle:

select person, count(*) as numMonths
from (select person, ym, @ym, @person,
             if(@person = person and @ym = ym - 1, @grp, @grp := @grp + 1) as grp,
             @person := person,
             @ym := ym
      from (select distinct person, year(purdate)*12+month(purdate) as ym
            from records r
           ) r cross join
           (select @person := '', @ym := 0, @grp := 0) const
      order by 1, 2
     ) pym
group by person, grp;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Бърз съвет:Използване на командата DROP USER

  2. WEEK() Примери – MySQL

  3. Spring Data Join със спецификации

  4. MySQL GROUP BY...HVING различни стойности едно и също поле

  5. Колоната за актуализиране на MySQL само ако стойността не е празна къде