Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menemukan perbedaan antara dua nilai di kolom yang sama di MySQL

Oke, sampai di rumah, dan bisa mengetahuinya.

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

Menggunakan hasil dari 2 subkueri, masing-masing dengan subkuerinya sendiri ke yang pertama dan terakhir, masing-masing, merekam untuk rentang tersebut.

Saya menggunakan integer untuk stock_id , float untuk price dan timestamp untuk tanggal, karena mungkin ada masalah (terutama dengan MIN dan MAX) dengan tipe data lain.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GALAT:HHH000299:Tidak dapat menyelesaikan pembaruan skema java.lang.NullPointerException

  2. ER_NOT_SUPPORTED_AUTH_MODE - server MySQL

  3. Cara memasukkan tag ke dalam database menggunakan jquery html dan php

  4. Gagal menemukan direktori data yang valid. Instalasi biner generik MySQL

  5. PDO menyiapkan pernyataan fetch() mengembalikan hasil ganda