database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 888 게시물 읽기
No. 888
날짜필드가 Long Type인 경우... 부탁 드립니다.
작성자
쿼리초보
작성일
2005-12-12 15:38
조회수
5,735

제가 현재 하고 있는 업무 중 통계 관련된 쿼리를 하고 있습니다.

요건중에 특정 From ~ To 날짜를 주어 그날짜에 해당하는 특정 상품별로

세부 날짜에 대한 실적 정보를 보여 줘야 하는 부분이 있는데.

테이블에 날짜 필드가 Long Type으로 지정 되어 있어서 요건에 맞는 정보를 가져 오기가 쉽지

않네요.. 테이블의 Type 변경은 불가한 상황입니다.

 

SELECT b.product_name as prd_name
, count(*) as 요청
, count(case b.state when 1 then b.unique_id end ) as 진행
, count(case b.state when 2 then b.unique_id end) as 성공

, count(case b.state when 5 then b.unique_id end) as 취소
, max(a.create_dt) as 날짜
FROM Table a, Table b
WHERE a.order_id = b.order_id
AND (a.create_dt BETWEEN 1134313200000 AND 1134399600000)

==> AND 부분은 '86400000'(=1000*60*60*24) 한 값을 적용한 것입니다.
GROUP BY b.product_name ORDER BY 1 DESC;

 

 

여기에 group by 에 create_dt를 포함시키면

 

 

상품 요청 성공 진행 취소 날짜
A 3 3 0 0 1134344762390
A 5 5 0 0 1134344800497
A 3 3 0 0 1134344931456
B 71 71 0 0 1134344813610
B 8 8 0 0 1134344909492
B 5 5 0 0 1134345321951
C 3 3 0 0 1134344750308
C 4 4 0 0 1134344903291
D 1 1 0 0 1134344729395
D 2 2 0 0 1134344740732
E 47 0 0 47 1134344831683
E 2 0 0 2 1134344870455


시간대별로 같은 날짜에도 여러건이 생성 되므로 위와 같은 결과가 나옵니다.

날짜는 다시 java에서 날짜형으로 변환하고 있습니다.

이를 제가 예를 들어 12월 1일부터 12월 3일로 조건을 주어

 

상품 요청 성공 진행 취소 날짜
A 23 23 0 0 1134345342580(12월1일)
A 11 11 0 0 1134344870455(12월2일)
A 43 34 0 9 1134365344552(12월3일)
B 93 0 93 0 1134345352554(12월1일)
B 7 0 7 0 1134344903291(12월2일)
B 5 0 5 0 1134344979106(12월3일)
           


이렇게 나오게 하는게 쿼리로만으로 가능한가요?

 

감사합니다..

이 글에 대한 댓글이 총 4건 있습니다.

AND 부분은 '86400000'(=1000*60*60*24) 한 값을 적용한 것입니다.

 

이게 무슨말인지 잘 모르겠는데요

궁굼이님이 2005-12-12 19:03에 작성한 댓글입니다. Edit

조회날짜가 12월 3일인경우 그에 해당하는 long 변수 값이

 1134313200000에서 86400000 을 더한 12월 3일의 최대 값이

 1134399600000  이라는것 입니다.

 

쿼리초보님이 2005-12-13 10:20에 작성한 댓글입니다. Edit

1134313200000 에 해당하는 날자(예 1202)가 어떻게 나왔는지 모르겠는데요

궁굼님이 2005-12-14 14:17에 작성한 댓글입니다. Edit

입력 받은 값이 12월3일 이면 어플리케이션에서  아래와 같이 변환하여

디비에 insert를 합니다.

Date tmpDate1 = new Date(Integer.parseInt("2005-12-03".substring(0,4)) - 1900, Integer.parseInt("2005-12-03".substring(5,7)) - 1, Integer.parseInt("2005-12-03".substring(8,10)));
   eDate = tmpDate1.getTime(); ====>
1134313200000

쿼리초님이 2005-12-14 17:40에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
892현재 쿼리를 오라클의 DECODE를 DB2의 CASE로 바꾸는것좀 봐주세요 [2]
이성훈
2005-12-14
8563
891오라클의 DECODE와 같은 함수가 DB2의 CASE인가요? [2]
이성훈
2005-12-14
9256
890복잡한 쿼리인데 꼭좀 봐주세요 [1]
이성훈
2005-12-13
5705
888날짜필드가 Long Type인 경우... 부탁 드립니다. [4]
쿼리초보
2005-12-12
5735
887쿼리 질문입니다. 꼭좀 도와주세요^^ [4]
이성훈
2005-12-07
5968
886DB2 /400 4버전에서 내장함수 사용이 안되네요. ROUND함수 등... 왜그럴까요?
이성훈
2005-12-05
7031
885릴레이션 작성중에 궁금점이 있어서 올립니다.(초보문제.;;)
김성환
2005-12-01
5314
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다