sql >> Database >  >> RDS >> Mysql

Het verschil vinden tussen twee waarden in dezelfde kolom in MySQL

Oké, ben thuisgekomen en heb dit kunnen uitzoeken.

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

Gebruikt de resultaten van 2 subquery's, elk met hun eigen subquery naar respectievelijk de eerste en laatste record voor dat bereik.

Ik gebruikte integer voor stock_id , float voor price en timestamp voor datum, aangezien er problemen kunnen zijn (met name met de MIN en MAX) met andere gegevenstypen.




  1. Gerelateerde records verwijderen in MySQL

  2. Indexeert MySQL automatisch kolommen met externe sleutels?

  3. MySQL:invoegen als dit ip geen records heeft

  4. Herstel de mysql-database vanuit .frm-bestanden