我想添加一个新列,将两个existing columns
的值分开,并将结果作为percentage
返回到现有SQL query
。
有人可以告诉我该怎么做吗?
答案 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
计算列是数据库中使用最少的功能之一。了解它们是值得的。可能需要在触发器中处理更复杂的计算方案。