그룹별 최대
목적은 그룹 내 각 고유 증권에 대해 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; 로그인 후 복사 이 쿼리는 하위 쿼리를 사용하지 않으므로 특히 대규모 쿼리의 경우 실행 시간을 크게 줄일 수 있습니다. 결과는 다음 구조의 테이블입니다.
|
---|