我是Postgres的新手。
我的postgres表名称是Vehicle,由以下几列组成
1.ID
2.name
3. wheel (2,3,4,6,8) // two wheeleer,4 whellers
4. region ('hyderabad','mumbai','delhi',...)
5. polluted ('yes','no')
我的查询是如何选择按区域分组污染的4辆轮车的数量
预期产量
hyderabad -> 4
mumbai -> 3
delhi -> 8,...
答案 0 :(得分:1)
理想情况下,您应该在包含所有区域的某个地方放置regions
表。假设这样,您可以编写以下查询:
SELECT
r.region,
COALESCE(v.cnt, 0) AS count
FROM regions r
LEFT JOIN
(
SELECT region, COUNT(*) cnt
FROM Vehicle
WHERE wheel = 4 AND polluted = 'yes'
GROUP BY region
) v
ON r.region = v.region;
如果您只有一个Vehicle
表,这是错误的数据库设计,那么我们可以尝试以下查询:
SELECT
region,
SUM(CASE WHEN wheel = 4 AND polluted = 'yes' THEN 1 ELSE 0 END) AS count
FROM Vehicle
GROUP BY region;
这效率低下,但是至少它可以让您报告每个区域,即使它没有匹配的记录。