Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL:Hitungan catatan dengan bulan berturut-turut

Anda dapat melakukan ini di MySQL menggunakan variabel (atau subkueri berkorelasi yang sangat rumit). Di database lain, Anda akan menggunakan fungsi jendela/analitik.

Logikanya adalah:

  1. Dapatkan satu baris per bulan dan satu orang dengan pembelian.
  2. Gunakan variabel untuk menetapkan nilai "pengelompokan" setiap kelompok bulan berturut-turut.
  3. Agregat menurut orang dan nilai "pengelompokan".

Berikut adalah kueri yang telah diuji pada SQL Fiddle Anda:

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. Kesalahan Kerangka Entitas MySQL - Penyedia toko yang ditentukan tidak dapat ditemukan dalam konfigurasi, atau tidak valid

  2. MySQL #1140 - Pencampuran kolom GROUP

  3. Bagaimana Membandingkan Dua Tabel di MySQL

  4. PHP dan MySQL:Pesan berdasarkan tanggal dan batas terbaru 10

  5. Sekuel Pro dengan Mysql di Docker