sql求和计算

时间:2014-11-05 17:18:01

标签: sql oracle

我有以下查询..

 Select Emp_key,date_key,
 ROUND(SUM(CASE WHEN Amt_2 <> 0 THEN Amt_1/ Amt_2 END),4) AS Net_Amt 
 from Salary
 group by Emp_key,date_key;

此查询的结果是什么?

1.Sum[(Amt_1/ Amt_2) + (Amt_1/ Amt_2) + (Amt_1/ Amt_2) + (Amt_1/ Amt_2) + ......]

2.Sum(Amt_1) / Sum(Amt_2)

我希望Net_Amt成为Sum(Amt_1) / Sum(Amt_2)

1 个答案:

答案 0 :(得分:0)

此计算基本上会产生您提供的第一个选项。

如果您想选择两个总和的除法,请执行以下操作:

SELECT   Emp_key, date_key, ROUND(SUM(Amt_1) / SUM(Amt_2), 4) AS Net_Amt 
FROM     salary
GROUP BY Emp_key,date_key;

如果您担心SUM(Amt_2)为零,您仍然可以使用case声明来处理:

SELECT   Emp_key, 
         date_key, 
         CASE WHEN SUM(Amt_2) <> 0 
              THEN ROUND(SUM(Amt_1) / SUM(Amt_2), 4) 
         END AS Net_Amt 
FROM     salary
GROUP BY Emp_key,date_key;