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

MySQLの同じ列にある2つの値の違いを見つける

    さて、家に帰って、これを理解することができました。

    SELECT stock_id, t1.price AS `then`, t2.price AS `now`, ROUND(t2.price - t1.price, 2) AS `difference`
    FROM (
            SELECT stock_id, price, date FROM share_prices sp
            WHERE  date = (SELECT MIN(date) FROM share_prices sp2
                           WHERE date BETWEEN '2010/02/23 10:00:00'
                           AND '2010/02/24 10:00:00'
                           AND sp2.stock_id = sp.stock_id)
        ) t1
        JOIN
        (
            SELECT stock_id, price, date FROM share_prices sp
            WHERE  date = (SELECT MAX(date) FROM share_prices sp2
                           WHERE date BETWEEN '2010/02/23 10:00:00'
                           AND '2010/02/24 10:00:00'
                           AND sp2.stock_id = sp.stock_id)
        ) t2 USING(stock_id)
    ORDER BY `difference` DESC
    

    2つのサブクエリの結果を使用します。各サブクエリには、その範囲のレコードの最初と最後にそれぞれ独自のサブクエリがあります。

    integerを使用していました stock_idの場合 、float priceの場合 およびtimestamp 他のデータ型で問題(特にMINとMAX)が発生する可能性があるため、日付については。




    1. PostgreSQLでデータベースのサイズを取得する2つの方法

    2. データベースからnull許容のDateTimeを取得する方法

    3. OraclePLSQLで区切りリストをループする方法

    4. PostgreSQLでのVACUUM処理の概要