如何汇总一列,然后按汇总的列分组

问题描述 投票:0回答:3

我有一张桌子,下面是

Col A          
10
20
30

我要这个结果

Col A         Col B
10             60
20             60
30             60
sql oracle sum window-functions
3个回答
2
投票

在其分析版本中使用

sum

SQL> with test (cola) as
  2    (select 10 from dual union all
  3     select 20 from dual union all
  4     select 30 from dual
  5    )
  6  select cola,
  7    sum(cola) over () colb        --> this
  8  from test;

      COLA       COLB
---------- ----------
        10         60
        20         60
        30         60

SQL>

0
投票

只需在分析函数上加上总和,您就会得到想要的结果。

select colA,sum(colA) over() colB from Table;

0
投票

使用您的示例数据:

WITH tbl (COL_1) AS
(   
    SELECT 10 FROM Dual UNION ALL
    SELECT 20 FROM Dual UNION ALL
    SELECT 30 FROM Dual
)

...您可以选择总和作为子查询列:

Select    COL_1, ( Select Sum(COL_1) From tbl ) "COL_2"
From      tbl 
Order By  COL_1

...或者您可以使用 sum 子查询加入您的表

Select  t1.COL_1, t2.COL_2
From    tbl t1
Inner Join (Select Sum(COL_1) "COL_2" From tbl  ) t2 ON(1 = 1)
Order By t1.COL_1

两者结果为:

     COL_1      COL_2
---------- ----------
        10         60
        20         60
        30         60
© www.soinside.com 2019 - 2024. All rights reserved.