1つの会社の株式の取引に関する情報を含むテーブルstockpriceがあります。タイムスタンプと価格の2つの列があります。彼らは貿易が起こった時と売却の価格を表します。テーブル内のレコードの自然順序はランダムであり、タイムスタンプでソートされません。現在の行とSQLの時間順テーブルの次の行とのペアを作成しようとすると、不明な列エラー
現在の取引価格と以前の取引の価格との差額を時間的に保存する別の列(デルタと呼ぶ)を追加します。
価格差を計算し、すべての行でその差異デルタを入力する単一のSQL文を作成します。
私はmysql上で実行するために以下のようにsqlを書いていますが、私は動かすことができません。現在の取引価格と以前のトランザクションの価格との差を計算するために、最初の行の前のは何もありませんので、賢明な、mysqlの私にエラー「『フィールドリスト』不明な列 『previous.price』」を与える、いくつかの専門家は、これは
SELECT
`current`.timestamp,
`current`.price,
`current`.price - IFNULL(`previous`.price, 0) AS delta
FROM
stockprice AS `current`
LEFT JOIN
stockprice AS `next`
ON `next`.timestamp = (SELECT MIN(timestamp)
FROM stockprice
WHERE timestamp > `current`.timestamp)
My database like:
timestamp price
2011-10-27 00:00:00 12424
2011-10-24 00:00:00 15464
2011-10-25 00:00:00 543464
2011-10-23 00:00:00 58791
宿題を追加してください –
タイムスタンプ列にユニーク制約(主キー制約)がありますか? –
質問に関する有用な情報を提供する質問タイトルを記入してください。あなたはそれをタグ付けしたので、それはSQLに関するものです。あなたは質問を投稿したので、それは質問です。現在のタイトル_「難しいSQLはもう一度、専門家が必要ですか?」_は何も追加しません。 –