わかりました、すべての典型的な取引情報を含む取引口座からの単純なテーブルがあるとしましょう:
Account ID Type OrderID Points NetPL Balance
13543564678 16 BUY 389745683 4.55 100.00 1,000,000.00
13543564678 16 BUY 389745684 4.55 100.00 1,000,100.00
13543564678 16 BUY 389745685 4.55 100.00 1,000,200.00
13543564678 16 SELL 389745686 4.55 100.00 1,000,300.00
13543564678 16 BUY 389745687 4.55 100.00 1,000,400.00
13543564678 16 SELL 389745688 4.55 100.00 1,000,500.00
13543564678 16 SELL 389745689 4.55 100.00 1,000,600.00
13543564678 16 SELL 389745690 4.55 -100.00 1,000,700.00
13543564678 16 SELL 389745691 4.55 -100.00 1,000,600.00
13543564678 16 SELL 389745692 4.55 -100.00 1,000,500.00
13543564678 16 SELL 389745693 4.55 -100.00 1,000,400.00
13543564678 16 SELL 389745694 4.55 100.00 1,000,300.00
13543564678 16 SELL 389745695 4.55 100.00 1,000,400.00
13543564678 16 BUY 389745696 4.55 100.00 1,000,500.00
13543564678 16 BUY 389745697 4.55 100.00 1,000,600.00
13543564678 16 BUY 389745698 4.55 100.00 1,000,700.00
13543564678 16 BUY 389745699 4.55 100.00 1,000,800.00
13543564678 16 BUY 389745700 4.55 100.00 1,000,900.00
13543564678 16 BUY 389745701 4.55 100.00 1,001,000.00
13543564678 16 BUY 389745702 4.55 100.00 1,001,100.00
13543564678 16 BUY 389745703 4.55 100.00 1,001,200.00
13543564678 16 BUY 389745704 4.55 -100.00 1,001,300.00
13543564678 16 BUY 389745705 4.55 -100.00 1,001,200.00
13543564678 16 BUY 389745706 4.55 -100.00 1,001,100.00
13543564678 21 BUY 389745707 4.55 -100.00 1,001,000.00
13543564678 21 SELL 389745708 4.55 -100.00 1,000,900.00
13543564678 21 SELL 389745709 4.55 -100.00 1,000,800.00
13543564678 21 SELL 389745710 4.55 -100.00 1,000,700.00
13543564678 21 BUY 389745711 4.55 -100.00 1,000,600.00
13543564678 21 SELL 389745712 4.55 -100.00 1,000,500.00
13543564678 21 BUY 389745713 4.55 -100.00 1,000,400.00
13543564678 21 SELL 389745714 4.55 -100.00 1,000,300.00
13543564678 21 SELL 389745715 4.55 100.00 1,000,200.00
13543564678 21 BUY 389745716 4.55 100.00 1,000,300.00
ここで必要なのは、SQL のみを使用して最大ドローダウンを計算することです。Javaで簡単に実行できます(ループを実行します)が、これは大きなクエリの一部であり、さまざまなaccパラメーターを計算する必要があります。
式を説明しましょう: 最大ドローダウンは、データベースで利用可能なすべての acc レコードについて、マイナス方向への最大の残高低下を示す値です。上記の例を見ると、最初のドローダウンは $400 (最初のマイナスの $100 セクション) で、2 番目のドローダウンはより大きく、1200 ドル (2 番目のセクション) です。ご存知のように、これらのドローダウンは定期的に発生するため、ac の履歴には、ここに示すように 2 つだけではなく、多くのドローダウンが含まれているはずです。通常、100,000 レコード以上の巨大なデータセットでこの種のデータを計算します。
env は oracle 11gr2、読み取りアクセスのみです。どんな賢いアイデアでも大歓迎です!
わかりました。システムが編集内容を上書きしているように見えるので、それを 1 つに統合する必要があります。負の取引を 'Y' としてマップする artif 列を追加しようとし、その後それらに対して sum() を実行する方法を見つけようとしました。ここでの問題は、任意の 1 つのレコードが結果レコードの sum() よりも多くなる可能性があることです。