我有一个带有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/

10-09 02:01