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