首頁 >資料庫 >mysql教程 >如何使用 SQL 尋找每個證券的最新位置?

如何使用 SQL 尋找每個證券的最新位置?

Susan Sarandon
Susan Sarandon原創
2025-01-04 12:43:41997瀏覽

How to Find the Most Recent Position for Each Security Using SQL?

分組最大值

問題:

從以下位置取得每個證券的最新位置表:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn