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

車両の読み取り値から差し引くことにより、車両の走行距離を計算します

    巨大な脂肪の免責事項: これにはnoが付属しています 保証がありますが、 私はあなたの問題を理解しましたそして 私はどこかで間違っていません。次のことを考慮してください。

    あなたのテーブルは

    CREATE TABLE `foo` (`id` INTEGER, `date` DATE, `mileage` INT);
    

    考えられる1つの方法は、最初に先月の最新の読み取り日を使用してビューを作成することです(これは、別のネストされたSELECTに変換できます。 あなたがそんなに傾いているなら):

    CREATE VIEW `past_month_readings` 
    AS (SELECT `id`, 
        max(`date`) AS `latestreading`
        FROM `foo` 
        WHERE MONTH(`date`) = MONTH(NOW())-1 
        GROUP BY `id`);
    

    続いて

    SELECT `currentmileages`.`id`, `currentmileage`-`previousmileage` FROM 
     (SELECT `foo`.`id`, `mileage` AS `currentmileage` 
      FROM `foo` 
      JOIN (SELECT `id`, MAX(`date`) AS `latestreading` FROM `foo` GROUP BY `id`) 
      AS `baz` 
      ON `foo`.`id` = `baz`.`id`
      AND `foo`.`date` = `baz`.`latestreading`
     ) 
    AS `currentmileages`
    JOIN
     (SELECT `foo`.`id`, `mileage` AS `previousmileage` 
      FROM `foo` 
      JOIN `past_month_readings` 
      ON `foo`.`id`=`past_month_readings`.`id` 
      AND `foo`.`date` = `past_month_readings`.`latestreading`)
    AS `previousmileages`
    ON
    `currentmileages`.`id` = `previousmileages`.`id`
    

    の場合
    +------+------------+---------+
    | id   | date       | mileage |
    +------+------------+---------+
    |    1 | 2015-06-15 |    1234 |
    |    1 | 2015-07-15 |    1444 |
    |    1 | 2015-07-25 |    2000 |
    |    2 | 2015-06-01 |     100 |
    |    2 | 2015-06-20 |     200 |
    |    2 | 2015-07-20 |     300 |
    +------+------------+---------+
    

    これにより

    +------+------------------------------------+
    | id   | `currentmileage`-`previousmileage` |
    +------+------------------------------------+
    |    1 |                                766 |
    |    2 |                                100 |
    +------+------------------------------------+
    


    1. 頻度順に並べられた上位の明確な結果を選択します

    2. PostgreSQLデータベースからテーブル*または*ビューを削除するにはどうすればよいですか?

    3. SQLclのlogin.sqlファイルを作成する方法

    4. WHERE条件の値のリストを含むパンダのread_sql