我有两个查询:
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中进行该划分,从而不必执行两个查询?
答案 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)
。