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

tìm giao dịch liên tiếp trong vòng 10 phút

Dựa trên định dạng ngày của bạn trong bảng, bạn sẽ cần chuyển đổi chúng bằng cách sử dụng STR_TO_DATE để sử dụng chúng trong một truy vấn. Nếu cột của bạn thực sự là một datetime nhập và đó chỉ là mã hiển thị của bạn xuất ra định dạng đó, chỉ cần thay thế STR_TO_DATE(xxx, '%m/%d/%Y %k:%i') trong truy vấn này với xxx .

Cách để tìm đơn hàng trong vòng 10 phút cách nhau là tự tham gia vào bàn của bạn trên user_id , order_id và thời gian của đơn đặt hàng thứ hai trong khoảng thời gian của đơn đặt hàng đầu tiên và 10 phút sau:

SELECT t1.user_id, t1.create_time AS order1_time, t2.create_time AS order2_time
FROM transactions t1
JOIN transactions t2 ON t2.user_id = t1.user_id
                    AND t2.order_id != t1.order_id
                    AND STR_TO_DATE(t2.create_time, '%m/%d/%Y %k:%i') BETWEEN
                           STR_TO_DATE(t1.create_time, '%m/%d/%Y %k:%i') 
                       AND STR_TO_DATE(t1.create_time, '%m/%d/%Y %k:%i') + INTERVAL 10 MINUTE

Đầu ra:

user_id     order1_time     order2_time
101         4/2/2018 8:34   4/2/2018 8:37
103         4/2/2018 9:32   4/2/2018 9:36
106         4/2/2018 13:11  4/2/2018 13:18

Demo trên dbfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể cập nhật dữ liệu từ cơ sở dữ liệu MySQL

  2. Làm việc với Cơ sở dữ liệu MySQL cPanel

  3. xóa bằng cách sử dụng ở đâu và hoặc

  4. Tự động tạo đối tượng PHP dựa trên chuỗi

  5. Lỗi MySql:Trường 1364 'display_name' không có giá trị mặc định