[英]How to Divide two columns in DB2 SQL
I have disk capacities stored in 2 columns as CAPACITY_TOTAL and CAPACITY_USED. 我将磁盘容量存储在2列中,分别为CAPACITY_TOTAL和CAPACITY_USED。 I need to present % utilization for which I need to divide CAPACITY_USED by CAPACITY_TOTAL as CAPACITY_USED/CAPACITY_TOTAL * 100. I am using below Query:
我需要提供将利用率百分比划分为CAPACITY_USED / CAPACITY_TOTAL * 100的利用率百分比。我正在使用以下查询:
select CAPACITY_USED / CAPACITY_TOTAL from TableName
which gives below error: 给出以下错误:
DB2 SQL Error: SQLCODE=-801, SQLSTATE=22012, SQLERRMC=null, DRIVER=4.15.82
I have casted my columns to decimal but even that doesn't work. 我已经将列转换为十进制,但即使这样也无法正常工作。
Error code 801 means your query was trying to divide by zero. 错误代码801表示您的查询试图除以零。
select CAPACITY_USED / CAPACITY_TOTAL from TableName
where CAPACITY_TOTAL IS NOT NULL and CAPACITY_TOTAL <> 0
OK, so SQLSTATE=22012
means you're trying to divide by zero . 好的,所以
SQLSTATE=22012
意味着您正在尝试除以零 。 Apparently some of your rows contain nulls or zeroes in CAPACITY_TOTAL
column and db fails to calculate the formula. 显然,您的某些行的
CAPACITY_TOTAL
列中包含空值或零,并且db无法计算公式。
Try this query for better results: 尝试以下查询可获得更好的结果:
SELECT CASE CAPACITY_TOTAL
WHEN 0 THEN 0
WHEN NULL THEN 0
ELSE CAPACITY_USED / CAPACITY_TOTAL
END AS UTILIZATION
FROM MY_TABLE
You may want to put some other meaningful return values for zeroes / nulls. 您可能需要为零/空值添加其他有意义的返回值。
Alternatively, skip rows, where CAPACITY_TOTAL
is null or zero: 或者,跳过行,其中
CAPACITY_TOTAL
为null或零:
SELECT CAPACITY_USED / CAPACITY_TOTAL AS UTILIZATION
FROM MY_TABLE
WHERE CAPACITY_TOTAL IS NOT NULL
AND CAPACITY_TOTAL > 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.