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

Đếm các thay đổi trong dòng thời gian với MySQL

SET @last_task = 0;
SELECT SUM(new_task) AS tasks_performed
FROM (
  SELECT 
    IF(@last_task = RobotShortestPath, 0, 1) AS new_task,
    @last_task := RobotShortestPath
  FROM table
  ORDER BY ??
) AS tmp

Cập nhật cho nhiều bảng
Từ chế độ xem chuẩn hóa cấu trúc cơ sở dữ liệu, tốt hơn hết là bạn nên sử dụng một bảng và có một bảng xác định được lưu trữ để xác định cột nào là rô bốt, nếu điều đó không khả thi vì lý do nào đó, bạn có thể lấy điều đó bằng cách kết hợp các bảng:

SET @last_task = 0;
SELECT robot_id, SUM(new_task) AS tasks_performed
FROM (
  SELECT 
    IF(@last_task = RobotShortestPath, 0, 1) AS new_task,
    @last_task := RobotShortestPath
  FROM (
    SELECT 1 AS robot_id, robot_log_1.* FROM robot_log_1
    UNION SELECT 2, robot_log_2.* FROM robot_log_2
    UNION SELECT 3, robot_log_3.* FROM robot_log_3
    UNION SELECT 4, robot_log_4.* FROM robot_log_4
    UNION SELECT 5, robot_log_5.* FROM robot_log_5
  ) as robot_log
  ORDER BY robot_id, robot_log_id
) AS robot_log_history
GROUP BY robot_id
ORDER BY tasks_performed DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Loại nào bạn sẽ ánh xạ BigDecimal trong Java / Hibernate trong MySQL?

  2. OSX ld:không tìm thấy thư viện cho -lssl

  3. Dễ dàng thiết lập máy chủ web với XAMPP

  4. Sử dụng ngày trong ô Excel trong mệnh đề GIỮA trong truy vấn SQL

  5. Tìm sự phụ thuộc hàm