计数 returns 为零的两个语句的除法

Division of two statements with count returns zero

我是 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 就可以了。

尝试

SELECT A * 100 / B

或因整数除法中间结果为0

您可以将查询简化为一个 select 语句并通过与 100.0 相乘来强制转换,其中 .0 应该可以解决问题

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