2009-10-15 102 views
0

我在Oracle 10g上。 我有一張表,其中包含過去一年中存儲在系統中的所有文件。 我想統計每月存款,按文件大小對它們進行分組。例如Oracle 10g:按文件大小分組的每月統計信息

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

所以我的結果會是什麼樣子:

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

我想用Oracle的解析函數,但他們不熟悉我。

您的幫助將不勝感激。

更新: 我有這個疑問,給了我一個平坦的列表。

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

感謝的是,我從來沒有見過「WITH blah AS」或EXTRACT功能。 – darreljnz 2009-10-18 03:05:01

+0

WITH語法在Oracle中稱爲子查詢因子分解,並且在Oracle 9i +中受支持。 – 2009-10-18 03:21:37

0

這是太多的工作從頭開始做,如果。這些關鍵詞可以幫助您解碼,總結(分區依據)。

+0

感謝,這是有益的 – 2009-10-15 19:51:22