グループごとの最大値
目的は、内部の一意の証券ごとに、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; ログイン後にコピー このクエリはサブクエリの使用を回避するため、特に大規模なクエリの実行時間を大幅に短縮できます。 結果は、次の構造を持つテーブルになります:
|
---|