繁体   English   中英

选择将一列的值与另一列的值求和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM