제가 현재 하고 있는 업무 중 통계 관련된 쿼리를 하고
있습니다.
요건중에 특정 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일) |
|
|
|
|
|
|
이렇게 나오게 하는게 쿼리로만으로 가능한가요?
감사합니다..
|