我在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
现在我必须作出分析部。
感谢的是,我从来没有见过“WITH blah AS”或EXTRACT功能。 – darreljnz 2009-10-18 03:05:01
WITH语法在Oracle中称为子查询因子分解,并且在Oracle 9i +中受支持。 – 2009-10-18 03:21:37