Sql 计算活动总和

Sql 计算活动总和,sql,oracle,Sql,Oracle,我有一张桌子,上面有以下信息 activity cost order date other information 10 1 100 -- 20 2 100 10 1 100 30 4 100 40 4 100 20 2 100 40 4

我有一张桌子,上面有以下信息

activity     cost    order   date  other information
10            1       100     --
20            2       100
10            1       100
30            4       100
40            4       100
20            2       100
40            4       100
20            2       100
10            1       101
10            1       101
20            1       101
我的要求是得到一个工作单上所有活动的总和 例:订单100

1+2+4+4=11

1(活动10) 2(活动20) 4(活动30)等

我试过分组,计算起来要花很多时间。仓库中有1lakh plus记录。是否有任何有效的方式的可能性

SELECT SUM(MIN(cost))
FROM COST_WAREHOUSE a
WHERE   order = 100
GROUP BY (order, ACTIVITY)

您可以使用以下查询来获取(活动、订单、成本)的不同元组的成本之和


这首先解决了正确性问题。当您提到更好的性能时,您的基准是什么?如果您将您的查询作为基准,那么恐怕我误解了您的要求。我知道在不了解底层结构的情况下度量性能是非常困难的。在我的表格中,活动的成本在任何情况下都是相同的。这就是当我对它进行分组时(然后是最小值或最大值)将产生一个唯一值的方式。哦!这里似乎存在一些正常化问题。无论如何,在应用聚合函数之前,与我提供的具有内部查询的版本相比,您的版本的性能会更好,但我认为这是边缘的,我仍然支持我的版本,因为它保证了正确性,因为您的表仍然允许一项活动有不同的成本,因为没有任何约束可以阻止:)
SELECT SUM(COST)
FROM
    (SELECT DISTINCT activity, order, cost 
     FROM COST_WAREHOUSE WHERE order = 100) AS A