Oracle SQL 试图获取列的百分比

标签: sql Oracle
发布时间: 2017/4/15 0:00:51
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我使用 Oracle 的 SQL 开发人员嗨,想要我的桌子上百分比。

我当前的查询是︰

select 
  decode(grouping(life), 1, 'Total', life) as "LifeName", 
  sum(case 
        when task is not null and to_char(datee, 'MM') = '08' 
          and to_char(datee, 'YYYY') = '2013' 
        then 1 
        else 0 
      end) as "MonthStatus"
from life_lk, task_c
where life_lk.life_id = task_c.life_id
group by rollup(life)

我得到的输出电流可以是︰

LifeName             MonthStatus
dog                     5
bear                    20
cat                     1
Fish                    4
Total                   30

然而,我想要的输出︰

LifeName             MonthStatus           Percent
dog                     5                     16
bear                   20                     66
cat                     1                      3
Fish                    4                     13
Total                  30                    100

所以月状态下的每个单元我要数除以总在这种情况下是 30。 随着时间的推移为号将动态更改,所以我只是不能除以 30。

对不起,我的邋遢的看表。 不知道如何使他们看起来整洁和前排成了。

谢谢你的帮助

解决方法 1:

 SELECT t1.lifename, t1.monthstatus, (t1.monthstatus / t2.total * 100) as prcent FROM
 (
 select 
   decode(grouping(life), 1, 'Total', life) as "LifeName", 
 sum(case 
    when task is not null and to_char(datee, 'MM') = '08' 
      and to_char(datee, 'YYYY') = '2013' 
    then 1 
    else 0 
  end) as "MonthStatus"
from life_lk, task_c
where life_lk.life_id = task_c.life_id
group by rollup(life) ) t1
 ,
(select sum(monthstatus) as total FROM life_lk) t2 ;

这应该工作,我可能有你的表和列虽然错了

官方微信
官方QQ群
31647020