具有计数的两个语句的除法返回零

时间:2017-06-22 22:55:42

标签: sql sqlite count division

我是SQL的新手(使用SQLiteStudio),我正在尝试使用一些聚合函数。我想找到我的数据子集的比例,其中个体的质量小于575,但查询保持返回零:

SELECT A/B*100
FROM (
    SELECT COUNT(*) AS A
    FROM Male
    WHERE mass < 575 AND location = 'Hawaii')
        ,(
    SELECT COUNT(*) AS B
    FROM Male
    WHERE location = 'Hawaii')
;

我已经阅读了其他问题,其中问题是必须将有问题的变量声明为小数,但我不知道如何更改COUNT()函数的约束。乘以A * B效果很好。

2 个答案:

答案 0 :(得分:2)

您可以将查询简化为一个select语句,并通过乘以100.0强制转换,其中.0应该可以做到这一点

SELECT
  (SUM(CASE WHEN mass < 575 THEN 1 ELSE 0 END) * 100.0) / COUNT(*)
FROM Male
WHERE location = 'Hawaii'

答案 1 :(得分:1)

尝试

SELECT A * 100 / B
由于整数除法,

或中间结果为0。