Sql 如何除以另一个查询的结果

Sql 如何除以另一个查询的结果,sql,oracle,Sql,Oracle,这是一个基于之前帖子的单独问题: [连结] 我正在使用以下Oracle SQL查询: SELECT JOB_GROUP, SUM(PEOPLE) AS CURRENT_PEOPLE SUM(PEOPLE) / '100' AS RATIO FROM MY_VIEW WHERE MONTH = '01-DEC-2013' GROUP BY ROLLUP (OB_GROUP) ORDER BY RATIO DESC; 这个查询给我的输出如下 JOB_GROUP CURRENT_P

这是一个基于之前帖子的单独问题:

[连结]

我正在使用以下Oracle SQL查询:

SELECT JOB_GROUP,
   SUM(PEOPLE) AS CURRENT_PEOPLE
   SUM(PEOPLE) / '100' AS RATIO
FROM MY_VIEW
WHERE MONTH = '01-DEC-2013'
GROUP BY ROLLUP (OB_GROUP)
ORDER BY RATIO DESC;
这个查询给我的输出如下

JOB_GROUP    CURRENT_PEOPLE    RATIO
WORKER1     100                1.0
WORKER2     30                 .3
WORKER3     40                 .4
WORKER4     25                 .25
WORKER5     30                 .30
(NULL)      225                2.25
我需要能够将所有比率之和除以比率之和,其中job_group='WORKER1',WORKER2,WORKER4。例如,我们可以有5个不同的工作组,但我只需要1、2和4的比率之和。我怀疑这是某种类型的子查询,但尚未得到正确的结果

这个等式看起来像总和(比率)/总和(比率),其中工人,1,2,4。2.25/(1.0+.3+.25)=.80


感谢您提供的任何帮助,

以下内容使用分析函数获取工作人员的数量:

select JOB_GROUP, CURRENT_PEOPLE,
       CURRENT_PEOPLE / sum(job_group = 'WORKER1' then CURRENT_PEOPLE end) over () as Ratio
from (SELECT JOB_GROUP,
             SUM(PEOPLE) AS CURRENT_PEOPLE
      FROM my_view
      WHERE MONTH = '01-DEC-2013'
      GROUP BY ROLLUP (JOB_GROUP)
     ) t
ORDER BY RATIO DESC;

请提供示例数据和所需结果。将表添加到这些框中的秘诀是什么?我已经查看了高级帮助,但找不到它。我想你或是被前一个编辑过的人,组织得很好;)谢谢你的帮助。这里有一个参考资料。一般来说,如果你在一行的开头放四个空格,你会在阴影区域得到固定宽度的字体,这对代码和表格都很好。嗨…我添加了一个包含数据的表格,我希望这能让它更清晰一些。这是我需要学习的SQL基础知识,所以我非常感谢。您从哪里获得
0.80
值<代码>2.25/1.55是
1.45…
?你是想得到一个数字,还是把计算出的值作为当前结果集中每一行的额外列?(我不明白你当前的“比率”值,但我认为这并不完全相关)。这实际上给了我与上面相同的结果。如果我用伪代码声明查询,它听起来会是这样的..工人1、2和4的总比率除以比率之和是多少。我怀疑这可以通过使用复杂的子查询来实现。我正在处理您提供的此查询,并注意到如果我将其更改为“按作业组分组”,并在其中添加“作业组=”WORKER1“,则无论您为“”添加了哪个工作人员,我都会得到1。我创建了一个子查询。将分析函数与聚合结合起来可能会令人困惑。