>데이터 베이스 >MySQL 튜토리얼 >Oracle SQL에서 각 ID의 최신 수량을 검색하는 방법은 무엇입니까?

Oracle SQL에서 각 ID의 최신 수량을 검색하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-21 15:26:12824검색

How to Retrieve the Latest Quantity for Each ID in Oracle SQL?

Oracle SQL: ID별 최신 수량 추출

이 가이드에서는 Oracle SQL 데이터베이스 내의 각 고유 ID에 대한 최신 수량을 효율적으로 검색하는 방법을 보여줍니다. 다음 구조의 "qtys"라는 테이블이 있다고 가정해 보겠습니다.

  • ID: 각 레코드의 고유 식별자
  • TS: 수량이 기록된 시점을 나타내는 타임스탬프
  • QTY: 수량 값입니다.

목표는 모든 개별 QTY에 대한 최신 수량(TS)과 해당 타임스탬프(ID)를 얻는 것입니다.

해결책:

다음 쿼리는 이를 달성하기 위해 MAX() 함수와 GROUP BY 절을 활용합니다.

<code class="language-sql">SELECT
    id,
    MAX(TS) AS "Latest Timestamp",
    MAX(QTY) KEEP (DENSE_RANK LAST ORDER BY TS) AS "Latest Quantity"
FROM
    qtys
GROUP BY
    id;</code>

이 쿼리는 데이터를 ID별로 그룹화한 다음 각 그룹에 대해 최대 타임스탬프(MAX(TS))를 선택합니다. 결정적으로 MAX(QTY) KEEP (DENSE_RANK LAST ORDER BY TS)는 여러 항목이 동일한 최대 타임스탬프를 공유하더라도 최신 타임스탬프와 관련된 수량을 검색하도록 보장합니다.

대체 접근 방식:

1. 지난 X분 동안 필터링:

결과를 지난 X분 내의 항목으로 제한하려면 WHERE 절을 포함하세요.

<code class="language-sql">SELECT
    id,
    MAX(TS) AS "Latest Timestamp",
    MAX(QTY) KEEP (DENSE_RANK LAST ORDER BY TS) AS "Latest Quantity"
FROM
    qtys
WHERE
    TS > SYSTIMESTAMP - INTERVAL '30' MINUTE
GROUP BY
    id;</code>

'30' MINUTE을 원하는 시간 간격으로 바꾸세요.

2. 다른 테이블로 참여하기:

다른 테이블의 데이터를 통합해야 하는 경우(예: idname 열이 있는 "이름"), JOIN:

을 사용하세요.
<code class="language-sql">SELECT
    t1.id || '-' || t2.idname AS "ID-IDNAME",
    MAX(t1.TS) AS "Latest Timestamp",
    MAX(t1.QTY) KEEP (DENSE_RANK LAST ORDER BY t1.TS) AS "Latest Quantity"
FROM
    qtys t1
JOIN
    names t2 ON t1.id = t2.id
GROUP BY
    t1.id || '-' || t2.idname;</code>

이것은 id 열을 기준으로 "qtys"와 "names"를 결합하고 결합된 식별자에 대해 IDidname을 연결합니다. 그런 다음 MAX() 함수는 결합된 데이터에 대해 작동합니다. 특정 데이터베이스 스키마와 일치하도록 테이블 및 열 이름을 조정하는 것을 잊지 마세요.

위 내용은 Oracle SQL에서 각 ID의 최신 수량을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.