如何对两个SELECT查询执行除法?

时间:2019-01-30 18:35:57

标签: sql

我有两个产生数字的查询结果。我想知道如何将两个查询合并为一个除法运算。

我的查询为

SELECT COUNT(*) FROM Games WHERE Title = "Zelda" - This gets me my numerator
SELECT COUNT(*) FROM Games - This is my denominator.

我想写一个查询,该查询是分子/分母的结果集。这可能吗?

3 个答案:

答案 0 :(得分:0)

有条件的sum

select sum(case when Title = 'Zelda' then 1 else 0) / count(*) as result from Games

上面的代码将进行整数除法。
如果您需要更高的精度:

select 1.0 * sum(case when Title = 'Zelda' then 1 else 0) / count(*) as result from Games

此外如果您的RDBMS允许它你可以这样做:

SELECT (SELECT COUNT(*) FROM Games WHERE Title = "Zelda") /(SELECT COUNT(*) FROM Games)

答案 1 :(得分:0)

您可以在SELECT内使用FORM

SELECT CAST(T1.N AS float)/T2.D FROM
(SELECT COUNT(*) AS N FROM Games WHERE Title = "Zelda") T1,
(SELECT COUNT(*) AS D FROM Games) T2

您的每个查询都可以视为一个表(具有一个结果变量),只需使用AS为它们命名,然后创建外部查询以选择所需的算术运算即可。 (将结果强制浮动以获取比率)。

答案 2 :(得分:0)

我会简单地做:

input

我认为这是满足您要求的最简单查询(假设SELECT AVG( (Title = 'Zelda)::int) FROM Games; 永远不会Title