[英]How to return decimal numbers in sqlite calculated field
I have the following query: 我有以下查询:
SELECT
qryFoodInCases.fldCaseID,
qryFoodInCases.fldFood,
AteAttackRate,
NotAteAttackRate,
Round( AteAttackRate / NotAteAttackRate, 2 ) RelativeRisk
FROM
qryFoodInCases
LEFT JOIN
(
SELECT
qryNotAteInCase.fldCaseID,
qryNotAteInCase.fldFood,
COALESCE( qryNotAteAndGotSick.NotAteAndGotSick, 0 ) NotAteAndGotSick,
qryNotAteInCase.NotAteInCase
TotalNotAte,
100 * COALESCE( qryNotAteAndGotSick.NotAteAndGotSick, 0 ) / qryNotAteInCase.NotAteInCase NotAteAttackRate
FROM
qryNotAteInCase
LEFT JOIN qryNotAteAndGotSick ON qryNotAteInCase.fldFood = qryNotAteAndGotSick.fldFood
GROUP BY qryNotAteInCase.fldFood
) QA
ON qryFoodInCases.fldFood = QA.fldFood
LEFT JOIN
(
SELECT
qryFoodInCases.fldCaseID,
qryFoodInCases.fldFood,
COALESCE( qryAteAndGotSick.AteAndGotSick, 0) AteAndGotSick,
qryFoodInCases.fldFoodFrequency TotalAte,
100 * COALESCE( qryAteAndGotSick.AteAndGotSick, 0 ) / qryFoodInCases.fldFoodFrequency AteAttackRate
FROM
qryFoodInCases
LEFT JOIN qryAteAndGotSick ON qryFoodInCases.fldFood = qryAteAndGotSick.fldFood
GROUP BY
qryFoodInCases.fldFood
) QN
ON qryFoodInCases.fldFood = QN.fldFood
GROUP BY
qryFoodInCases.fldFood
ORDER BY
AteAttackRate DESC,
NotAteAttackRate
NB: Only the last field of the select statement is relevant to this question: 注意:仅select语句的最后一个字段与此问题有关:
round(AteAttackRate/NotAteAttackRate,2) RelativeRisk
That return the following records 返回以下记录
+-----------+------------+---------------+------------------+--------------+
| fldCaseID | fldFood | AteAttackRate | NotAteAttackRate | RelativeRisk |
+-----------+------------+---------------+------------------+--------------+
| 1 | Beans | 100 | 33 | 3 |
| 1 | Cabagge | 66 | 75 | 0 |
| 1 | fried fish | 66 | 75 | 0 |
| 1 | Banana | 50 | 80 | 0 |
| 1 | Pork | 50 | 100 | 0 |
| 1 | Chicken | 33 | 100 | 0 |
| 1 | Potatoes | 0 | 100 | 0 |
| 1 | Rice | 0 | 100 | 0 |
+-----------+------------+---------------+------------------+--------------+
What do I need to do to get the decimal values of the field RelativeRisk 我需要怎么做才能获取字段RelativeRisk的十进制值
Try: 尝试:
select
...
round(AteAttackRate/cast(NotAteAttackRate as float),2) RelativeRisk
...
Both AteAttackRate
and NotAteAttackRate
are integers, so AteAttackRate / NotAteAttackRate
is integer too, and round(AteAttackRate / NotAteAttackRate, 2)
changes nothing. AteAttackRate
和NotAteAttackRate
都是整数,因此AteAttackRate / NotAteAttackRate
也是整数,并且round(AteAttackRate / NotAteAttackRate, 2)
不变。 You have to explicitly cast to float at least one of the numbers to obtain a float quotient. 您必须显式强制转换为至少浮点数之一以获得浮点商。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.