Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL:Số lượng bản ghi với các tháng liên tiếp

Bạn có thể thực hiện điều này trong MySQL bằng cách sử dụng các biến (hoặc các truy vấn con tương quan rất phức tạp). Trong các cơ sở dữ liệu khác, bạn sẽ sử dụng các hàm cửa sổ / phân tích.

Logic là:

  1. Nhận một hàng mỗi tháng và một người mua hàng.
  2. Sử dụng các biến để gán cho mỗi nhóm các tháng liên tiếp một giá trị "phân nhóm".
  3. Tổng hợp theo người và giá trị "nhóm".

Đây là một truy vấn đã được kiểm tra trên SQL Fiddle của bạn:

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 - tính toán chênh lệch thời gian cho nhiều hàng

  2. Cách phát hiện xem một giá trị có chứa ít nhất một chữ số trong MySQL hay không

  3. MYSQL không thêm thông tin vào cơ sở dữ liệu của tôi

  4. PHP mysqli_real_escape_string trả về chuỗi trống

  5. truy vấn mysql - ngày định dạng trên đầu ra?