ホームページ > データベース > mysql チュートリアル > データベース内の各証券の最新のポジションを効率的に見つけるにはどうすればよいでしょうか?

データベース内の各証券の最新のポジションを効率的に見つけるにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2025-01-05 09:10:40
オリジナル
642 人が閲覧しました

How to Efficiently Find the Latest Position for Each Security in a Database?

グループごとの最大値

目的は、内部の一意の証券ごとに、ID と対応する購入日によって識別される最新のポジションを取得することです。指定されたデータセット。

次のテーブルの位置を考えてみましょう。

</th></tr></thead>
<tbody>
<tr>
<td>id</td>
<td>security</td>
<td>buy_date</td>
</tr>
<tr>
<td>26</td>
<td>PCS</td>
<td>2012-02-08</td>
</tr>
<tr>
<td>27</td>
<td>PCS</td>
<td>2013-01-19</td>
</tr>
<tr>
<td>28</td>
<td>RDN</td>
<td>2012-04-17</td>
</tr>
<tr>
<td>29</td>
<td>RDN</td>
<td>2012-05-19</td>
</tr>
<tr>
<td>30</td>
<td>RDN</td>
<td>2012-08-18</td>
</tr>
<tr>
<td>31</td>
<td>RDN</td>
<td>2012-09-19</td>
</tr>
<tr>
<td>32</td>
<td>HK</td>
<td>2012-09-25</td>
</tr>
<tr>
<td>33</td>
<td>HK</td>
<td>2012-11-13</td>
</tr>
<tr>
<td>34</td>
<td>HK</td>
<td>2013-01-19</td>
</tr>
<tr>
<td>35</td>
<td>SGI</td>
<td>2013-01-17</td>
</tr>
<tr>
<td>36</td>
<td>SGI</td>
<td>2013-02-16</td>
</tr>
<tr>
<td>18084</td>
<td>KERX</td>
<td>2013-02-20</td>
</tr>
<tr>
<td>18249</td>
<td>KERX</td>
<td>0000-00-00</td>
</tr>
</tbody>
</table>
<p>

必要な結果を取得する最適化されたクエリは次のとおりです。

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;
ログイン後にコピー

このクエリはサブクエリの使用を回避するため、特に大規模なクエリの実行時間を大幅に短縮できます。

結果は、次の構造を持つテーブルになります:

</th></tr></thead>
<tbody>
<tr>
<td>id</td>
<td>security</td>
<td>buy_date</td>
</tr>
<tr>
<td>27</td>
<td>PCS</td>
<td>2013-01-19</td>
</tr>
<tr>
<td>31</td>
<td>RDN</td>
<td>2012-09-19</td>
</tr>
<tr>
<td>34</td>
<td>HK</td>
<td>2013-01-19</td>
</tr>
<tr>
<td>36</td>
<td>SGI</td>
<td>2013-02-16</td>
</tr>
<tr>
<td>18084</td>
<td>KERX</td>
<td>2013-02-20</td>
</tr>
</tbody>
</table>
<p>

各行は、一意の証券の最新のポジションを表します。 ID と購入日に関して。

以上がデータベース内の各証券の最新のポジションを効率的に見つけるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート