ホームページ  >  記事  >  データベース  >  MySQL SELECT ステートメント内の行間の差異を計算するにはどうすればよいですか?

MySQL SELECT ステートメント内の行間の差異を計算するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-07 09:32:03851ブラウズ

How to Calculate the Difference Between Rows in a MySQL SELECT Statement?

MySQL SELECT ステートメント内の行間の差異の計算

問題:

決定方法MySQL SELECT ステートメントの後続の 2 つの行間の値の違いは?提供されるテーブルには、キロメートル、日付、車の ID などのデータが含まれています。目標は、前の日付からのキロメートル数を示す追加の列を含むビューを作成することです。

解決策:

これを達成するには、LEFT を組み合わせます。 JOINとサブクエリを使用します。 LEFT JOIN を使用すると、myTable テーブルからデータを取得できますが、サブクエリにより、現在の行より前の日付を持つ最新の行との比較が確実に行われます。このアプローチでは、キロメートル単位で望ましい差が効果的に生成されます。

SELECT
    mt1.ID,
    mt1.Kilometers,
    mt1.date,
    mt1.Kilometers - IFNULL(mt2.Kilometers, 0) AS number_km_since_last_date   
FROM
    myTable mt1
    LEFT JOIN myTable mt2
        ON mt2.Date = (
            SELECT MAX(Date)
            FROM myTable mt3
            WHERE mt3.Date < mt1.Date
        )
ORDER BY mt1.date

代替ソリューション:

別の方法では、MySQL のハッキング機能を使用して lag() 関数をエミュレートします。

SET @kilo=0;

SELECT
    mt1.ID,
    mt1.Kilometers - @kilo AS number_km_since_last_date,
    @kilo := mt1.Kilometers Kilometers,
    mt1.date
FROM myTable mt1
ORDER BY mt1.date

結果:

どちらの方法も、並べ替えられたテーブル内の連続する行間のキロメートル単位の差を正常に計算し、必要な追加情報を提供するビューが得られます。

以上がMySQL SELECT ステートメント内の行間の差異を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。