我有一个带有2个INT字段的sqlite3表。 (通过和失败)
我想计算通过的百分比,因此我使用以下SQL
SELECT id,
passed,
failed,
passed / (passed + failed )* 100 AS 'passedPC'
FROM myData
如果通过是23,失败是3,我得到0,这是意外的。
为什么是这样?
最佳答案
这是因为您要进行整数除法和23/26=0
。您需要强制其执行浮点除法。最简单的方法是将一个值与1.0
相乘,如下所示:
SELECT id, passed, failed, ((passed * 1.0) / (passed + failed )) * 100 AS 'passedPC'
FROM myData
或者,您可以使用cast operator将列强制为
real
数据类型:SELECT id, passed, failed, cast(passed as real) / (passed + failed ) * 100 AS 'passedPC'
FROM myData;
Sample SQL Fiddle显示差异。
关于sql - 使用SQLite3中的除法计算字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30213617/