sourcecode

최대 날짜로 레코드 가져오기

copyscript 2023. 2. 15. 22:08
반응형

최대 날짜로 레코드 가져오기

내가 데이터를 추출했다고 가정해 보자.

예.

SELECT A, date
FROM table

(A의 각 값에 대해) 최대 날짜의 레코드만 원합니다.나는 쓸 수 있다.

SELECT A, col_date
  FROM TABLENAME t_ext
 WHERE col_date = (SELECT MAX (col_date)
                     FROM TABLENAME t_in
                    WHERE t_in.A = t_ext.A)

하지만 제 질문은 너무 길어서...ANALITY FUNTION을 사용하여 동일한 작업을 수행하는 보다 콤팩트한 방법이 있습니까?

분석 함수 접근법은 다음과 같습니다.

SELECT a, some_date_column
  FROM (SELECT a,
               some_date_column,
               rank() over (partition by a order by some_date_column desc) rnk
          FROM tablename)
 WHERE rnk = 1

연결 처리 방법(또는 데이터 모델에서 연결 가능 여부)에 따라서는ROW_NUMBER또는DENSE_RANK분석 기능RANK.

한다면date그리고.col_date에는, 간단하게 실시할 필요가 있는 컬럼이 있습니다.

SELECT A, MAX(date) FROM t GROUP BY A

사용하지 않는 이유:

WITH x AS ( SELECT A, MAX(col_date) m FROM TABLENAME GROUP BY A )
SELECT t.A, t.date FROM TABLENAME t JOIN x ON x.A = t.A AND x.m = t.col_date

그렇지 않은 경우:

SELECT A, FIRST_VALUE(date) KEEP(dense_rank FIRST ORDER BY col_date DESC)
  FROM TABLENAME
 GROUP BY A

다음 항목도 사용할 수 있습니다.

SELECT t.*
  FROM 
        TABLENAME t
    JOIN
        ( SELECT A, MAX(col_date) AS col_date
          FROM TABLENAME
          GROUP BY A
        ) m
      ON  m.A = t.A
      AND m.col_date = t.col_date

A는 키, max(date)는 값입니다.이 경우 다음과 같이 쿼리를 단순화할 수 있습니다.

SELECT distinct A, max(date) over (partition by A)
  FROM TABLENAME

Justin Cave의 답변이 가장 좋지만, 앙투아 옵션을 원하신다면 다음을 시도해 보십시오.

select A,col_date
from (select A,col_date
    from tablename 
      order by col_date desc)
      where rownum<2

Oracle 12C 이후 특정 수의 행을 가져올 수 있습니다.FETCH FIRST ROW ONLY당신의 경우, 이는 '무엇을 의미하는지'를 의미합니다.ORDER BY퍼포먼스를 고려해야 합니다.

SELECT A, col_date
FROM TABLENAME t_ext
ORDER BY col_date DESC NULLS LAST
FETCH FIRST 1 ROW ONLY;

NULLS LAST필드에 null 값이 있을 수 있습니다.

SELECT mu_file, mudate
  FROM flightdata t_ext
 WHERE mudate = (SELECT MAX (mudate)
                     FROM flightdata where mudate < sysdate)

언급URL : https://stackoverflow.com/questions/8898020/taking-the-record-with-the-max-date

반응형