mariadb 최근데이터 조회 질문드립니다. 0 1 397

by CVS [MySQL] mysql mariadb query [2020.08.25 10:43:05]


안녕하세요

가장 최근 날짜의 데이터와 그에 맞는 값을 조회하려고하는데

오라클과 달리 mariadb에서는 group by 후 order by desc를 적용하니 그냥 맨 처음값을 가져옵니다.

최근날짜는 max로 해결했는데 가장 최근의 amt값은 어떻게 가져올수있을까요?

현재 쿼리는 이렇게 만들었습니다.

select

 trnsctn_dt,

 a.id,

 amt,

from

 (select 

  max(trnsctn_dt) as trnsctn_dt,

  id,

  amt

 from

  table

 where

  trnsctn_dt >= curdate() - interval 0 day

 group by id

 order by trnsctn_dt desc) as a

join

 table b

on

 a.id = b.id

group by a.id

order by trnsctn_dt desc;

 

by 마농 [2020.08.25 12:17:35]
-- 1. 분석함수 지원 버전(10.0 ?)인 경우
SELECT id
     , trnsctn_dt
     , amt
  FROM (SELECT id
             , trnsctn_dt
             , amt
             , ROW_NUMBER() OVER(PARTITION BY id ORDER BY trnsctn_dt DESC) rn
          FROM table1
         WHERE trnsctn_dt >= CURDATE()
        ) a
 WHERE rn = 1
;
-- 1. 분석함수 미지원 버전인 경우
SELECT a.id
     , a.trnsctn_dt
     , b.amt
  FROM (SELECT id
             , MAX(trnsctn_dt) trnsctn_dt
          FROM table1
         WHERE trnsctn_dt >= CURDATE()
         GROUP BY id
        ) a
 INNER JOIN table1 b
    ON a.id = b.id
   AND a.trnsctn_dt = b.trnsctn_dt
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입