我需要创建一个计算一些数据的SQL查询.例如,我有这样的SQL查询:
SELECT SUM(AMOUNT) FROM FIRMS WHERE FIRM_ID IN(....) GROUP BY FIRM;
Run Code Online (Sandbox Code Playgroud)
产生这样的数据:
28,740,573
30,849,923
25,665,724
43,223,313
34,334,534
35,102,286
38,556,820
19,384,871
Run Code Online (Sandbox Code Playgroud)
现在,在第二列中,我需要显示一个条目与所有条目之和之间的关系.像那样:
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
Run Code Online (Sandbox Code Playgroud)
例如,上面第一列的所有条目的总和将是255,858,044第一个条目,第二个单元格中的值28,740,573 / 255,858,044 = 0.1123.对于结果中的每个条目都是相同的.
我怎样才能做到这一点?
UPD:谢谢@a_horse_with_no_name,我忘记了DBMS.这是甲骨文.
大多数数据库现在支持ANSI标准窗口函数.所以,你可以这样做:
SELECT SUM(AMOUNT),
SUM(AMOUNT) / SUM(SUM(AMOUNT)) OVER () as ratio
FROM FIRMS
WHERE FIRM_ID IN (....)
GROUP BY FIRM;
Run Code Online (Sandbox Code Playgroud)
注意:某些数据库执行整数除法.因此,如果AMOUNT是整数,则需要在这些数据库中转换为非整数.一种简单的方法是1.0乘以.
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |