질문하나 드립니다! 0 3 1,455

by YJsin [2013.04.17 14:34:59]



   A    B
2013-04-03 15:04:04  2013-04-03 15:04:48
2013-04-03 15:04:04  2013-04-04 11:04:39
2013-04-04 10:04:26  2013-04-04 10:04:57
2013-04-04 10:04:26  2013-04-04 11:04:08
2013-04-04 10:04:26  2013-04-04 11:04:32


라는 결과가 있습니다.

이 중에

중복된 A에서 B가 가장 마지막인 것들만 출력 출력하고 싶습니다.

ex)


  A B
 2013-04-03 15:04:04    2013-04-04 11:04:39
 2013-04-04 10:04:26    2013-04-04 11:04:32


도저히 생각해봐도 답을 모르겠네요.
by 아발란체 [2013.04.17 14:38:55]
SELECT A, MAX(B) FROM TABLE_NAME GROUP BY A

by 손님 [2013.04.17 14:51:33]

감사합니다.

한가지 더 궁금한 점이 있습니다.

to_char(테이블명, 'yyyy-MM-dd hh24":"mm":"ss') 를 사용 도중에 어떻게 MAX를 뽑아낼 수 있을까요?


by 마농 [2013.04.17 15:09:51]

to_char(테이블명, 'yyyy-MM-dd hh24":"mm":"ss')
테이블명이 아니라 컬럼명이겠죠. 씽따옴표는 굳이 필요 없구요.
컬럼에 직접 MAX 하셔도 되고 전체 표현식에 MAX 하셔도 됩니다.
단 성능면에 있어서는 컬럼에 MAX 하는게 좋습니다.
성능 차이는 TO_CHAR 함수의 수행 횟수에 있습니다.
TO_CHAR(MAX(b), 'yyyy-mm-dd hh24:mi:ss') -- Group By 결과행에 대해 수행, 2회
MAX(TO_CHAR(b, 'yyyy-mm-dd hh24:mi:ss')) -- 모든 행에 대해 수행, 총 5회 수행


GROUP BY 기준 항목인 a 에도 TO_CHAR 를 사용하셨다면...
이 또한 마찬가지 입니다.
GROUP BY 에서는 TO_CHAR 하지 마시고
SELECT 절에서만 TO_CHAR 하세요.

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