次のようなpricechartという名前のSQLサーバーテーブルがあります。
Serial Price Volume Id Delta
1 3.2 280 1121
2 4.6 700 4821
3 1.1 120 5696
4 3.2 300 1121
5 3.2 412 1121
6 1.1 130 5696
価格とIDが同じである場合、ボリューム間のデルタが必要になるように、デルタ列に入力したいと思います。たとえば、行4のデルタは20、行5は12、行6は10である必要があります。デルタは、現在のボリュームと同じ価格とIDを持つ前のボリュームとの差です。
データはSQLサーバーにあります。私がこれまでに試したこと:SQLサーバーからPythonにデータをフェッチしました。個別のIDの個別の辞書を作成してから、デルタを見つけます。
これは正しい方法ではないと確信しており、SQLサーバーで直接実行できる場合、またはパンダで実行できる場合は、ヘルプが必要です。
SQLテーブルは、順序付けされていないセットを表します。あなたは順序付けを念頭に置いているようで、その順序付けは列として表す必要があります。
この特定の目的のために、あなたは遅れを望んでいるようです:
select t.*,
(volume - lag(volume) over partition by price, id order by serial) ) as volum_diff
from t;
これ?
は、行の順序を指定する列または式用です。
これはNULL
、一致する「前の」行がない行に対して返されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加