oracle语句 求助

来源:百度知道 编辑:UC知道 时间:2024/06/06 14:27:39
假如 表 test 有两个字段 id,name
id name
1 任务1
2 任务2
3 任务1
4 任务3
5 任务2

要得到结果集
==========================
名称 次数 所占比率
任务1 2 2/5
任务2 2 2/5
任务3 1 1/5
总计 5 5/5
==========================

这个怎么写啊 就是最后那个总计我弄不出来
最后那行结果集的‘总计’要打印出来啊 你这个没有‘总计’字样
==================
谢谢你
但是,能不能不用 union 这个连接

就用类似 decode(name,'','总计','') 这样的函数给一次性弄出来啊?

select name,count(id),count(id)||'/'||(select count(*) from test) from test group by name union select '总计',count(*),count(*)||'/'||count(*) from test
decode是肯定不行的,它只能增加列,不能增加行啊,没有类似的函数可以做到的,要么可以使用存储过程来实现

我的思路,仅供参考..
1.count(name) as renwushu from mytable group by name order by 1,2;
2.count(*) from....
做个除法

用 union没问题