시간을 기준으로 각 그룹의 최신값을 조회
질문:
다음 Oracle 테이블을 고려하십시오.
<code>id date quantity 1 2010-01-04 11:00 152 2 2010-01-04 11:00 210 1 2010-01-04 10:45 132 2 2010-01-04 10:45 318 4 2010-01-04 10:45 122 1 2010-01-04 10:30 1 3 2010-01-04 10:30 214 2 2010-01-04 10:30 5515 4 2010-01-04 10:30 210</code>
목표는 ID 그룹별로 최신 값(및 해당 타임스탬프)을 검색하는 것입니다. 예상 출력은 다음과 같습니다.
<code>id date quantity 1 2010-01-04 11:00 152 2 2010-01-04 11:00 210 3 2010-01-04 10:30 214 4 2010-01-04 10:45 122</code>
해결책:
이렇게 하려면 내림차순 타임스탬프를 기준으로 id 그룹의 각 행 순위를 지정하는 인라인 뷰를 생성하세요.
<code class="language-sql">SELECT RANK() OVER (PARTITION BY id ORDER BY ts DESC) AS rnk, id, ts, qty FROM qtys</code>
그런 다음 순위 1로 레코드를 필터링하여 최신 값을 가져옵니다.
<code class="language-sql">SELECT x.id, x.ts AS "DATE", x.qty AS "QUANTITY" FROM (SELECT * FROM qtys) x WHERE x.rnk = 1</code>
고급 옵션:
<code class="language-sql">WHERE x.ts >= sysdate - INTERVAL 'XX' MINUTE</code>
<code class="language-sql">SELECT x.id || '-' || y.idname AS "ID", x.ts AS "DATE", x.qty AS "QUANTITY" FROM (SELECT * FROM qtys) x LEFT JOIN another_table y ON x.id = y.id</code>
위 내용은 Oracle의 타임스탬프를 기반으로 각 그룹의 최신 값을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!