不同项目值的总和Oracle SQL

时间:2017-03-01 13:10:14

标签: sql oracle group-by sum

我得到的数据是这样的:

ITEM    COLOR   VOL
1       RED     3
2       BLUE    3
3       RED     3
4       GREEN   12
5       BLUE    3
6       GREEN   12

我希望得到每种颜色的总和, 表示RED + BLUE + GREEN = 3 + 3 + 12 = 18

P.S我无法在子查询中执行此操作,因为它已经是大查询的一部分。我正在寻找一种方法可以在select子句中做到这一点。比如

select sum(distinct(COLOR) VOL) from myTable group by COLOR

非常感谢!

3 个答案:

答案 0 :(得分:3)

一种方法使用CTE或子查询来查找每种颜色的平均体积。然后取所有颜色的所有平均体积的总和。

WITH cte AS (
    SELECT COLOR, AVG(VOL) AS VOL   -- or MIN(VOL), or MAX(VOL)
    FROM yourTable
    GROUP BY COLOR
)
SELECT SUM(t.VOL)
FROM cte t

答案 1 :(得分:3)

将不同的总和相加,按颜色分组

select sum(sum(distinct VOL))
from MyTable
group by COLOR

在本地测试并here

答案 2 :(得分:2)

sum(max(vol)) from ... group by color

会起作用,但不清楚为什么你需要这样的东西。可能这个总和可以在您的查询中更早地计算(很多),而不是在最后。

概念证明(在标准Oracle模式上):

SQL> select sum(max(sal)) from scott.emp group by deptno;

SUM(MAX(SAL))
-------------
        10850

1 row selected.