sql >> Database >  >> RDS >> Mysql

Wijzigingen in de tijdlijn tellen met 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

Update voor meerdere tafels
Vanuit een weergave van de standaardstructuur van de database kun je het beste één tabel gebruiken en een dossier hebben waarin wordt aangegeven welke kolom welke robot is, als dat om de een of andere reden niet mogelijk is, kun je dat krijgen door de tabellen samen te voegen:

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. Hoe een fout op te lossen die wordt veroorzaakt doordat libmysqlclient.15.dylib niet wordt geladen?

  2. Operationele rapporten voor MySQL, MariaDB, PostgreSQL en MongoDB

  3. Mysql:waarden tussen twee kolommen selecteren

  4. Een normale query converteren naar een kruistabelquery in Access