值为col a / col b的新列

时间:2015-02-05 16:41:13

标签: sql select divide

我想添加一个新列,将两个existing columns的值分开,并将结果作为percentage返回到现有SQL query

有人可以告诉我该怎么做吗?

2 个答案:

答案 0 :(得分:3)

SQL支持算术运算:

SELECT a, b, 100.0 * a / b AS percentage
FROM   my_table
WHERE  (some condition)

编辑:
如评论中所述,如果b为零,则我们无法将a除以b。应明确处理此边缘情况。在下面的示例中,我为此案例返回null,但在您的实际问题的上下文中有任何其他有用的处理方法都可以:

SELECT a, b, CASE WHEN b = 0 THEN NULL ELSE 100.0 * a / b END AS percentage
FROM   my_table
WHERE  (some condition)

答案 1 :(得分:1)

有时将此作为持久计算而不是动态计算数百万条记录是有意义的。

如果要在表格定义中执行此操作,请使用持久计算列。下面的例子处理了demonimator中的null值问题,它还处理整数数学的问题。

alter table mytable
add [Result] AS (ColA*1.00/NULLIF(ColB,0)) Persisted

计算列是数据库中使用最少的功能之一。了解它们是值得的。可能需要在触发器中处理更复杂的计算方案。