如何在SQL中创建具有百分比的总计行

时间:2016-01-08 03:49:05

标签: sql

我有一个SQL,它生成的输出类似于附图中的"图A"所示的输出,但需要将其展开为"图B"。

任何人都可以协助SQL吗?感谢

Click here for Figure A & B image

2 个答案:

答案 0 :(得分:0)

不知道您使用的数据库,请尝试使用Oracle。 首先,您需要创建一个包含新列PERCENT_COMPLETED

的新表
    select STATE,WIDGETS_REQUIRED,WIDGETS_COMPLETED,
           WIDGETS_COMPLETED/WIDGETS_REQUIRED*100 | '%' as PERCENT_COMPLETED
    from table;

然后你需要在其中插入一个新行

   select 
      'Total' as STATE, 
      sum(WIDGETS_REQUIRED) as WIDGETS_REQUIRED, 
      sum(WIDGETS_COMPLETED) as WIDGETS_COMPLETED,
      sum(WIDGETS_COMPLETED)/sum(WIDGETS_REQUIRED)*100 | '%' as PERCENT_COMPLETED 
  into new_table
  from table;

答案 1 :(得分:0)

在MYSQL中,我尝试了这个解决方案。 首先,插入一个包含3个值的行:STATE,WIDGETS_REQUIRED,WIDGETS_COMPLETED。您可以稍后插入这3个值,但现在插入它们会更方便。

insert into FIGURE_A values
("TOTAL", 48, 33);

其次,添加一列:percent_complete

alter table FIGURE_A
ADD percent_complete decimal(5,2);

在这里你应该注意到你需要添加一个约束。见this question.

因此,我们需要添加检查约束:

alter table FIGURE_A    
ADD constraint chk_range CHECK (percent_complete>=0 and percent_complete<=100);

最后,我们只需添加百分比值。见here。计算百分比的方法有很多种。 this question更适合您的情况,因为您需要更新,而不仅仅是计算。

update FIGURE_A
set percent_complete = WIDGETS_COMPLETED*100/WIDGETS_REQUIRED

final result可能如下所示。