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

Sự khác biệt giữa các ngày trong hai hàng liên tiếp

Đối với PostgreSQL, tôi nghĩ bạn muốn mã lag chức năng cửa sổ để so sánh các hàng; nó sẽ hiệu quả hơn nhiều so với tự tham gia và bộ lọc. Điều này sẽ không hoạt động với MySQL, vì nó dường như vẫn không hỗ trợ các chức năng cửa sổ SQL:2003 tiêu chuẩn; xem bên dưới.

Để chỉ tìm hai giá trị thấp nhất, bạn có thể sử dụng secure_rank chức năng cửa sổ trên ticketid , sau đó lọc kết quả để chỉ trả về các hàng có secure_rank () =2 , tức là hàng có dấu thời gian thứ hai từ thấp nhất, trong đó lag () sẽ tạo ra hàng có dấu thời gian thấp nhất.

Xem SQLFiddle này hiển thị DDL mẫu và kết quả đầu ra.

SELECT ticketid, extract(epoch from tdiff) FROM (
  SELECT
      ticketid,
      ticketdate - lag(ticketdate) OVER (PARTITION BY ticketid ORDER BY ticketdate) AS tdiff,
      dense_rank() OVER (PARTITION BY ticketid ORDER BY ticketdate) AS rank
  FROM Table1
  ORDER BY ticketid) x
WHERE rank = 2;

Tôi đã sử dụng ticketdate làm tên cho cột ngày vì date là một tên khủng khiếp cho một cột (đó là một tên kiểu dữ liệu) và không bao giờ được sử dụng; nó phải được trích dẫn kép trong nhiều tình huống để hoạt động.

Cách tiếp cận di động có lẽ là tự tham gia mà những người khác đã đăng. Cách tiếp cận hàm cửa sổ ở trên có thể cũng hoạt động trên Oracle, nhưng dường như không hoạt động trong MySQL. Theo như tôi có thể phát hiện ra thì nó không hỗ trợ các chức năng cửa sổ SQL:2003.

Định nghĩa lược đồ sẽ hoạt động với MySQL nếu bạn SET sql_mode ='ANSI' và sử dụng dấu thời gian thay vì dấu thời gian bằng múi giờ . Có vẻ như các chức năng cửa sổ sẽ không; MySQL bị nghẹt trên HẾT mệnh đề. Xem SQLFiddle này .



  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ách một chuỗi và chèn vào bảng

  2. Làm cách nào để chuyển đổi từ TSQL sang MYSQL?

  3. Không thể sửa đổi thông tin tiêu đề

  4. Cập nhật hàng loạt Sqlalchemy trong MySQL hoạt động rất chậm

  5. Hiểu nhiều chỉ mục cột trong truy vấn MySQL