计数 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'
我是 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'