[英]select to sum the values of one column to other
我有一个表TABLE_A,其中有一列。
select VALUE from TABLE_A;
VALUE
---------
1
2
3
4
5
我需要第二列,这将使我获得第一列的所有值的总和。
预期:
VALUE SUM
--------- ---------
1 15
2 15
3 15
4 15
5 15
我需要在没有子选择查询的情况下执行此操作。(选择以代替列)
只需使用一个重要的子选择:
select value, (select sum(value) from TABLE_A)
from TABLE_A
或JOIN
:
select t1.value, t2.sum_value
from TABLE_A t1
CROSS JOIN (select sum(value) as sum_value from TABLE_A) t2
Oracle是否支持CROSS JOIN
语法?
使用SUM()OVER()分析函数可以轻松完成此操作。
SELECT VALUE,
SUM(VALUE) OVER(ORDER BY NULL) as "SUM"
FROM TABLE_A;
工作演示:
SQL> WITH sample_data AS(
2 -- end of sample_data mocking as real table
3 SELECT 1 VALUE FROM dual UNION ALL
4 SELECT 2 VALUE FROM dual UNION ALL
5 SELECT 3 VALUE FROM dual UNION ALL
6 SELECT 4 VALUE FROM dual UNION ALL
7 SELECT 5 VALUE FROM dual
8 )
9 SELECT VALUE,
10 SUM(VALUE) OVER() as "SUM"
11 FROM sample_data;
VALUE SUM
---------- ----------
1 15
2 15
3 15
4 15
5 15
只需使用解析函数。 正确的表达式是:
select VALUE, sum(VALUE) over () as "sum"
from TABLE_A;
这是SQL的标准部分,通常比执行相同计算的其他方法效率更高。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.