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

MySQL trả về bản ghi đầu tiên và cuối cùng cho các kết quả giống hệt nhau liên tiếp

Cách dễ nhất để tiếp cận điều này là sử dụng các biến và tôi nghĩ rằng cách tiếp cận dễ nhất là thêm hai biến, một là số "lên" và một là số "xuống" vào bất kỳ hàng nhất định nào. Một dãy số tăng nhất định có giá trị không đổi đối với số chữ "xuống" trước đó và ngược lại. Logic này có thể được sử dụng để tổng hợp.

Truy vấn kết quả là:

select result, min(time_stamp) as start_time, max(time_stamp) as end_time
from (select r.*,
             (@ups := @ups + (result = 'up')) as ups,
             (@downs := @downs + (result = 'down')) as downs
      from results r cross join
           (select @ups := 0, @downs := 0) vars
      where service_id = 1
      order by time_stamp
     ) r
group by result, (case when result = 'up' then downs else ups end);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TẠO BẢNG NHƯ A1 thành A2

  2. Đếm hàng với PDO

  3. Khóa chính của cơ sở dữ liệu phải là số nguyên?

  4. MySQL:Khi tên tham số thủ tục được lưu trữ giống với tên cột bảng

  5. Tạo bảng lập trình bằng MyBatis và MySql