쿼리 하나 질문좀 드릴께요 !! 0 4 819

by 탑개발자 [SQL Query] [2015.01.27 14:43:23]


EQUIP TIME CPU MEMORY DISK
4 2015-01-27 오후 1:48:27 17.2 2.5 55.2
3 2015-01-27 오후 1:45:48 20.5 2.1 35.3
2 2015-01-27 오후 1:37:48 22.3 1.1 44.3
4 2015-01-27 오후 1:48:21 18.2 2.2 55.2
1 2015-01-27 오후 1:43:35 12.1 2.4 77.5
2 2015-01-27 오후 1:37:43 14.3 3.3 44.3
1 2015-01-27 오후 1:43:28 11.3 1.2 77.5
3 2015-01-27 오후 1:45:42 21.9 1.1 35.3

위에 처럼 테이블이 들어가고 있는데    EQUIP 별로 TIME 최근 데이터만 가져 오고 싶습니다. 어떻게 해야 할까요 ?

원하는 결과는 아래 입니다.

EQUIP TIME CPU MEMORY DISK
1 2015-01-27 오후 1:43:28 11.3 1.2 77.5
2 2015-01-27 오후 1:37:43 14.3 3.3 44.3
3 2015-01-27 오후 1:45:42 21.9 1.1 35.3
4 2015-01-27 오후 1:48:21 18.2 2.2 55.2

부탁드립니다. DB는 MYSQL 입니다.

by 마농 [2015.01.27 15:43:06]
SELECT equip, time, cpu, memory, disk
  FROM (SELECT equip, time, cpu, memory, disk
             , ROW_NUMBER() OVER(PARTITION BY equip ORDER BY time DESC) rn
          FROM t
        )
 WHERE rn = 1
;

 


by 탑개발자 [2015.01.27 16:02:29]

답변 감사합니다.

혹시 이쿼리를 mysql 에서 쓰려면 어떻게 변형 해야 하는지 아시면 알려주세요!


by 마농 [2015.01.27 16:35:30]

time 항목의 데이터 타입이 뭔가요?
문자형이라면? 위 형식대로 '오후' 라고 하는 문자열로 저장되어 있나요?
시간도 '01'시가 아닌 '1'시로 저장되어 있나요?


by 마농 [2015.01.27 17:22:44]
SELECT a.*
  FROM t a
 INNER JOIN
       (SELECT equip
             , MAX(time) time
          FROM t
         GROUP BY equip
        ) b
    ON a.equip = b.equip
   AND a.time  = b.time
 ORDER BY a.equip
;

 

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