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

MySQL / MariaDB:Làm thế nào để tìm khoảng trống trong dữ liệu theo thời gian?

Một cách tiếp cận có thể là truy vấn con đầu tiên và ghép nối từng bản ghi với bản ghi có dấu thời gian lớn hơn gần nhất. Sau đó, truy vấn và trả về tất cả các bản ghi có khoảng trống có kích thước đủ lớn.

SELECT
    DateTime AS GapStart,
    NextDateTime AS GapEnd,
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) AS SizeInSecond
FROM
(
    SELECT DateTime, Value,
        (SELECT MIN(DateTime) FROM #time t2
         WHERE t2.DateTime > t1.DateTime) AS NextDateTime
    FROM #time t1
) t
WHERE
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) > 5;   -- or whatever threshhold you want

Bản trình diễn

THÊM vào câu trả lời ban đầu

Nếu DateTime luôn phát triển, có thể cải thiện tốc độ bằng cách thay đổi SELECT nội bộ:

SELECT
    DateTime AS GapStart,
    NextDateTime AS GapEnd,
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) AS SizeInSecond
FROM
(
    SELECT DateTime, Value,
        (SELECT DateTime FROM #time t2
         WHERE t2.DateTime > t1.DateTime LIMIT 1) AS NextDateTime
    FROM #time t1
) t
WHERE
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) > 5;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. xóa khóa hoạt động toàn bộ bảng trong innodb

  2. Làm cách nào để sửa đổi kích thước của cột trong bảng MySQL?

  3. Mysql - cách đặt tăng tự động bắt đầu từ 0

  4. Menu điều hướng cây Mysql / php

  5. Ứng dụng web PHP:câu hỏi thực tiễn tốt nhất về thiết kế cơ sở dữ liệu mysql