Sql 如何除以另一个查询的结果
这是一个基于之前帖子的单独问题: [连结] 我正在使用以下Oracle 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
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。我创建了一个子查询。将分析函数与聚合结合起来可能会令人困惑。