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

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


안녕하세요

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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
2
3
4
5
6
7
8
9
10
11
12
13
-- 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
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 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() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입