将两个不同查询的结果分成一个

时间:2018-12-18 19:09:48

标签: sql count

我有两个查询:

SELECT COUNT(*)
FROM houses
WHERE with_people IS NOT NULL



SELECT COUNT(*)
FROM houses
where color = 'white' AND with_people IS NOT NULL

我先执行两个查询,然后在后端代码中执行(white_houses_with_people / white_houses)。

是否有一种方法可以在SQL中进行该划分,从而不必执行两个查询?

2 个答案:

答案 0 :(得分:3)

您可以使用条件聚合:

SELECT COUNT(*) AS cnt, COUNT(CASE WHEN color = 'white' THEN 1 END) AS cnt2
FROM houses
WHERE with_people IS NOT NULL;

与比率:

SELECT 
COALESCE((1.0*COUNT(CASE WHEN color = 'white' THEN 1 END)/NULLIF(COUNT(*),0)),0)  
AS ratio
FROM houses
WHERE with_people IS NOT NULL

答案 1 :(得分:2)

您可以简单地执行以下操作:

*,
*::before,
*::after {
  box-sizing: border-box; // 1
}

SELECT 1.0 * (SELECT COUNT(*) FROM houses WHERE color = 'white' AND with_people IS NOT NULL) / (SELECT COUNT(*) FROM houses WHERE with_people IS NOT NULL) 可以确保结果为1.0 *而不是decimal(, 1)

相关问题