如何在使用ratio_to_report的Oracle Query中添加小计?

ejk8hzay  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(85)

我正试图将总计添加到一个包含RATIO_TO_REPORT的中等简单的查询中。我审查了Stack solution(除其他外),我无法使它与我的查询工作。
我的疑问是,

select category, sum(selected_widgets) sum_selected_widgets, to_char(round(RATIO_TO_REPORT(sum(selected_widgets)) over (),4)*100,'999d99') || '%' percentage_selected, 
       count(*) widget_count, to_char(round(RATIO_TO_REPORT(count(*)) over (),4)*100,'999d99') || '%' percentage_all_widgets
from
(
  select widget_id, widget_seq, decode(widget_category,'1100',1,'2372',1,'2650',1,'3932',1,0) selected_widgets, min(category) category
  from widget
  inner join widget_detail wd on wd.widget_id = widget_id and wd.widget_seq = widget_seq and category is not null
  where widget_dx_date between '2018    ' and '20219999'
  group by widget_id, widget_seq, decode(widget_category,'1100',1,'2372',1,'2650',1,'3932',1,0)
)iq
group by category
order by 1;

我所要做的就是得到最后4列的总数。如果我将“rollup”添加到group by中,它将rollup行用作百分比计算的一部分,如下所示;

0   6886       3.20%    77871      5.32%
1   40689     18.91%    256538    17.54%
2   8898       4.13%    43615      2.98%
3   9817       4.56%    52809      3.61%
4   5087       2.36%    24683      1.69%
7   27397     12.73%    169669    11.60%
8   4451       2.07%    24148      1.65%
9   4371       2.03%    82084      5.61%
    107596    50.00%    731417    50.00%

如何将总计添加到此查询?

bjp0bcyl

bjp0bcyl1#

我发现另一个Stack Answer没有帮助,直到我点击DB Fiddle link and analyzed the code
我所缺少的是,是的,我需要汇总,但我也需要;

  1. ratio_to_report子句中的case语句。
    1.合并器,用于处理null。
    我最好的解释,请纠正我的错误,我会更新这个答案。
    case语句告诉ratio_to_report只计算grouping_id类别,而忽略total行。

相关问题