グループごとの最大値
問題:
以下から各銘柄の最新ポジションを取得しますテーブル:
id | security | buy_date |
---|---|---|
26 | PCS | 2012-02-08 |
27 | PCS | 2013-01-19 |
28 | RDN | 2012-04-17 |
29 | RDN | 2012-05-19 |
30 | RDN | 2012-08-18 |
31 | RDN | 2012-09-19 |
32 | HK | 2012-09-25 |
33 | HK | 2012-11-13 |
34 | HK | 2013-01-19 |
35 | SGI | 2013-01-17 |
36 | SGI | 2013-02-16 |
KERX | 2013-02-20 | |
KERX | 0000-00-00 |
解決策:
次のクエリは、対応する ID とともに各証券の最大購入日を取得します:
SELECT p1.id, p1.security, p1.buy_date FROM positions p1 left join positions p2 on p1.security = p2.security and p1.buy_date < p2.buy_date where p2.id is null;
このクエリは、左結合を使用して各証券の最新のポジションを効率的に見つけます。各証券の購入日を比較し、新しい購入日が存在しない行のみを選択します。この最適化されたソリューションにより、サブクエリベースのアプローチと比較して、より速い実行時間で正確な結果が得られます。
以上がSQL を使用して各証券の最新のポジションを見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。