sql >> Databasteknik >  >> RDS >> Mysql

Räknar förändringar i tidslinjen med 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

Uppdatering för flera tabeller
Från en databasstrukturstandardiseringsvy, är det bättre med en tabell, och ha en fil som identifierar vilken kolumn som är vilken robot, om det inte är möjligt av någon anledning, kan du få det genom att förena tabellerna:

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. Hur använder man mysqldump för en del av en tabell?

  2. Tjäna pengar med oanvända saker:En datamodell för delningsekonomi

  3. Associera tabeller med hjälp av Room-databasen i Android Studio

  4. Hur lagrar man 1/01/1900 3:54:32 i MySQL?