sql >> Database teknologi >  >> RDS >> Mysql

Find forskellen mellem to værdier i samme kolonne i MySQL

Ok, kom hjem og kunne finde ud af det.

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

Bruger resultaterne fra 2 underforespørgsler, hver med deres egen underforespørgsel til henholdsvis den første og sidste post for det pågældende område.

Jeg brugte integer for stock_id , float til price og timestamp for dato, da der kan være problemer (især med MIN og MAX) med andre datatyper.




  1. Jquery for at udfylde <table> baseret på <select>

  2. Hvordan skylles performance_schema-statistik uden at genstarte MySQL?

  3. TILKNYT sqlite-database i Android med SQLiteOpenHelper

  4. Få en returværdi i C# asp.net fra en lagret procedure (syntaksproblem)