쿼리좀 표현해주세요 0 6 1,897

by 유일 [2009.10.26 11:36:51]


DECODE(TRUNC(((SYSDATE -
             TO_DATE(D.GET_DATETIME,
                ’YYYYMMDDHH24MISS’)) * 24 * 60 / 30))

select절에서 대충 위와 같은 문을 적용할때에.

D.GET_DATETIME은 ’20091026113031’ <- 이런식의 시분초를 포함하는 다량의 데이터가 들어있습니다.

이중에서. 제일 이후에 올라온값 즉, 시분초값이 가장나중인 값을 구해와서 저문을 실행하고싶은데요.

감이 잡히질않네요.. 부탁드립니다.

 

=======================================================================================

 

질문 수정좀 할께요. 죄송합니다.

한 테이블에 GET_DATETIME 이란 컬럼의값이 일자 + 시분초를 포함한 값으로 수시로 데이터가 올라옵니다.

그중에서 해당날짜에 제일 이후에 올라온값, 즉 시분초값이 가장 나중인 값을 1row만 구해오면되는데요.

초보자여서 그런지 쉽지가않네요. 고수분들께서 너그러이 봐주셨으면 감사하겠습니다.

by 유일 [2009.10.26 11:43:57]
한가지더.. 그룹함수 count로 row수를 구할때.
select절에 포함되는 모든 값들을 꼭 그룹으로 전부 묶어줘야하는건가요?
select절에서 5가지 컬럼을이용해 그룹을 묶고 count로 row수를 반환한다고치면,
그룹이랑 관계없이(아니 그룹에 포함시키질 않는다고해야하나..) select절에 컬럼값을 포함시킬순없는건지요.. 궁금합니다.

by 서성우 [2009.10.26 11:49:57]
위의 쿼리문을

max로 묶거나 row_number()로
가장 나중값만 나오도록 해도 될 것 같은데요

by 유일 [2009.10.26 11:53:14]
서성우님 답변감사합니다 ^^
저도 그래서 max로 묶고있는데 꼭 그룹함수 쓸대.. select절에 들어간 모든 값들을
전부 group by할때 묶어줘야하는건가요.. max를쓰는건데 왜 저렇게해줘야하는지를 모르겠어서요 잘..

by 마농 [2009.10.26 12:30:20]
그룹함수는 group by에 지정된 그룹에 대한 그룹연산을 할때 사용되며
그룹으로 지정되지 않은 항목은 select절에 올 수 없습니다.
이부분은 설명이 필요한 부분이라기 보다는 스스로 이해하셔야 하는 부분입니다.
논리적으로 그럴수밖에 없기 때문입니다.

by 마농 [2009.10.26 12:33:25]
SELECT SUBSTR(d.get_datetime,1,8) 일자
, MAX(d.get_datetime) 일자별최종일시
FROM 테이블 d
GROUP BY SUBSTR(d.get_datetime,1,8)
;

by 유일 [2009.10.26 12:37:05]
마농님 답변 감사합니다.
그룹함수가 1개라도 쓰이는것이면.. 그 쿼리는 오직 그룹연산만 하는것인가보군요
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입