Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menghitung perubahan timeline dengan 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

Pembaruan untuk beberapa tabel
Dari tampilan normalisasi struktur database, Anda lebih baik dengan satu tabel, dan memiliki file yang mengidentifikasi kolom apa robot itu, jika itu tidak memungkinkan karena alasan tertentu, Anda bisa mendapatkannya dengan menyatukan tabel:

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. Versi mana yang merupakan Server MySQL saya?

  2. Setel Ulang Kata Sandi Root MySQL di Windows

  3. Bagaimana cara mendeteksi kebuntuan di Mysql / innodb?

  4. masalah banyak database php

  5. Subquery berkorelasi mySQL