sql >> データベース >  >> RDS >> Mysql

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
    

    複数のテーブルの更新
    データベース構造の正規化ビューから、1つのテーブルを使用する方が適切であり、どの列がどのロボットであるかを特定するファイルを用意します。何らかの理由でそれが不可能な場合は、テーブルを結合することで取得できます。

    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. 画像のパスと名前をデータベースにアップロードする方法-Codeigniter

    2. Postgres:まだ存在しない場合はINSERT

    3. PostgreSQLでのページングにカーソルを使用する

    4. 休止状態の検索クエリ