2009-10-15 5 views
0

Oracle 10g을 사용 중입니다. 나는 지난 해 동안 시스템에 저장된 모든 파일을 포함하는 테이블을 가지고 있습니다. 통계적 월별 예금을 파일 크기별로 그룹화하고자합니다. 나는 오라클의 분석 기능을 사용하고 싶지만 그들이 나에게 익숙하지 않은Oracle 10g : 월별 파일 크기 별 그룹화 통계

Month, 0-1m, 1m-10m, 10m-100m, 100mplus 
2009-03, 999, 999, 999, 999 

: 같은

0-1m 
1m-10m 
10m-100m 
100m + 

예를 들어

그래서 내 결과를 보일 것이다.

도움을 주시면 감사하겠습니다.

업데이트 : 나는 플랫 목록을 제공하는이 쿼리를 가지고 있습니다. 같은 것을 제공

select mois, groupement, count(*) nb 
from 
    (
    select to_char(vercdate,'YYYY-MM') mois, 
      case 
      when datasize > 1024*1024*1024 then 'Go' 
      when datasize > 1024*1024*100 then '100Mo' 
      when datasize > 1024*1024*10 then '10Mo' 
      when datasize > 1024*1024 then '1Mo' 
      else '0Mo' 
      end groupement 
    from table 
    where lower(filetype) = 'pdf' 
) 
where groupement <> '0Mo' 
GROUP by mois, groupement 

:

2007-08 1Mo 745 
2007-08 10Mo 48 
2007-09 1Mo 973 
2007-09 10Mo 175 
2007-09 100Mo 1 
2007-10 1Mo 913 
2007-10 10Mo 64 
2007-11 1Mo 828 
2007-11 10Mo 71 
2007-12 1Mo 456 
2007-12 10Mo 24 
2007-12 100Mo 1 
2008-01 1Mo 693 

는 지금은 분석 부분을 확인해야합니다.

답변

1

내가 분석 부분이 표시되지 않습니다 - 그냥 보이는 당신과 같이 데이터를 피벗 할 필요가 같은 :

WITH example AS (
    SELECT EXTRACT(YEAR FROM t.vercdate) 'y', 
      EXTRACT(MONTH FROM t.vercdate) 'm', 
      CASE 
       WHEN t.datasize > 1024*1024*1024 THEN 'Go' 
       WHEN t.datasize > 1024*1024*100 THEN '100Mo' 
       WHEN t.datasize > 1024*1024*10 THEN '10Mo' 
       WHEN t.datasize > 1024*1024 THEN '1Mo' 
       ELSE '0Mo' 
      END groupement 
     FROM TABLE t 
     WHERE LOWER(t.filetype) = 'pdf') 
SELECT t.mois, 
     CASE WHEN t.groupement = '1Mo' THEN t.nb ELSE NULL END '0-1m', 
     CASE WHEN t.groupement = '10Mo' THEN t.nb ELSE NULL END '1m-10m', 
     CASE WHEN t.groupement = '100Mo' THEN t.nb ELSE NULL END '10m-100m', 
     ...etc... 
    FROM (SELECT e.y || '-' || e.m mois, 
       groupement, 
       COUNT(e.*) 'nb' 
      FROM example e 
     WHERE e.groupement != '0Mo' 
     GROUP BY e.y, e.m, e.groupement) t 

참조 : EXTRACT

+0

감사합니다 도움이 될 것입니다, 나는 전에 "blah AS"나 EXTRACT 함수를 보지 못했습니다. – darreljnz

+0

WITH 구문은 Oracle에서 subquery factoring이라고하며 Oracle 9i +에서 지원됩니다. –

0

처음부터 그렇게하려면 너무 많은 작업이 필요합니다. 그 핵심어는 디코드, Sum Over (Partition By)를 도울 수 있습니다.

+0

덕분에,이 그것에 대해 –