我有一个带有 2 个 INT 字段的 sqlite3 表。(通过和失败)
我想计算 % Passed 所以我使用以下 SQL
SELECT id,
passed,
failed,
passed / (passed + failed )* 100 AS 'passedPC'
FROM myData
Run Code Online (Sandbox Code Playgroud)
如果 Passed 是 23 并且 Failed 是 3 我得到 0 返回这是意外的。
为什么是这样?
这是因为你在做整数除法和23/26=0
. 您需要强制它进行浮点除法。最简单的方法是将一个值与1.0
这样的值相乘:
SELECT id, passed, failed, ((passed * 1.0) / (passed + failed )) * 100 AS 'passedPC'
FROM myData
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用强制转换运算符将 aa 列强制为real
数据类型:
SELECT id, passed, failed, cast(passed as real) / (passed + failed ) * 100 AS 'passedPC'
FROM myData;
Run Code Online (Sandbox Code Playgroud)
显示差异的示例 SQL Fiddle。
归档时间: |
|
查看次数: |
2201 次 |
最近记录: |