【发布时间】:2019-06-03 08:41:19
【问题描述】:
我有一个名为 animals 的表,其中包含以下列:
id: INT
state: VARCHAR
还有一个名为 house 的表格,其中包含以下列:
id: INT
animal_id: INT
color: VARCHAR
我正在尝试获取动物的百分比(哪个状态为“活着”)及其 ID 在给定集合内,至少有一个房子(颜色为“红色”)。如果一只动物有不止一个红色的房子,没关系,应该算一次。
我知道如何获得符合这些条件的动物数量:
SELECT COUNT(*)
FROM animals
WHERE state = 'living'
AND id IN (10,11,12)
而且我知道如何获得具有这些条件的房屋:
SELECT COUNT(*)
FROM houses
WHERE color = 'red'
我不确定如何结合这两个查询来获得动物的百分比。
样本数据:
animals (id, state)
1, 'living'
2, 'dead'
3, 'living'
4, 'living'
5, 'dead'
6, 'living'
houses (id, animal_id, color)
1, 1, 'red'
2, 2, 'red'
3, 1, 'blue'
4, 6, 'red'
5, 4, 'red'
6, 1, 'red'
我们希望将动物范围缩小到 ID 为 1、2、3 和 5 的动物。
因此,由于 id 为 2 和 5 的动物已经死亡,因此不应将它们算作分母的一部分。现在,这给我们留下了动物 1 和 3,但只有 id 为 1 的动物有至少一个红房子(注意它有两个,但我们不在乎),这意味着百分比是:
(1 只动物至少有一个阅读房屋)/(2 只活着的动物)= 50%
【问题讨论】:
标签: sql postgresql percentage