使用第一列中的数据计算第二列中的数据

时间:2015-10-14 10:49:01

标签: sql oracle

我需要创建一个计算某些数据的SQL查询。 例如,我有这样的SQL查询:

SELECT SUM(AMOUNT) FROM FIRMS WHERE FIRM_ID IN(....) GROUP BY FIRM;

产生这样的数据:

28,740,573
30,849,923
25,665,724
43,223,313
34,334,534
35,102,286
38,556,820
19,384,871

现在,在第二列中,我需要显示一个条目与所有条目之和之间的关系。像那样:

28,740,573 | 0.1123
30,849,923 | 0.1206
25,665,724 | 0.1003
43,223,313 | 0.1689
34,334,534 | 0.1342
35,102,286 | 0.1372
38,556,820 | 0.1507
19,384,871 | 0.0758

例如,上面第一列的所有条目的总和将是255,858,044,第一个条目,第二个单元格中的值将是28,740,573 / 255,858,044 = 0.1123。对于结果中的每个条目都是一样的。

我该怎么做?

UPD:谢谢@a_horse_with_no_name,我忘记了DBMS。这是甲骨文。

1 个答案:

答案 0 :(得分:6)

现在大多数数据库都支持ANSI标准窗口函数。所以,你可以这样做:

SELECT SUM(AMOUNT),
       SUM(AMOUNT) / SUM(SUM(AMOUNT)) OVER () as ratio
FROM FIRMS
WHERE FIRM_ID IN (....)
GROUP BY FIRM; 

注意:某些数据库会进行整数除法。因此,如果AMOUNT是一个整数,那么您需要在这些数据库中转换为非整数。一种简单的方法是1.0乘以。

相关问题