グループごとの最大値: 各証券の最新ポジションの取得
提供されたデータセットで、各証券の最新ポジションを取得することを目的としています。 MAX() 集計関数に基づくクエリを使用しようとしましたが、単一行しか返されません。
これに対処するには、LEFT JOIN を利用する別のアプローチを採用できます。以下は、必要な結果を効率的に達成する最適化されたクエリです。
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;
このクエリは、同じ証券に対して後の購入日が存在する行を除外して、テーブル自体との外部結合を実行します。その結果、最新の購入日を含む証券ごとに 1 つの行が返されます。
この最適化されたアプローチを利用することで、クエリの実行時間を大幅に短縮し、必要な情報を効率的に取得できます。
以上がSQL を使用して各証券の最新のポジションを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。