我可以在以下场景中使用什么 Postgres 查询?
我的预期结果
说明:
Parent1 --> 4 台设备。 Parent1 有...
Parent2 --> 3 台设备。 Parent2 有...
基本上加入后的聚合:
SELECT p.parent AS name, count(*)
FROM parent p
JOIN child c USING (name)
GROUP BY p.parent
ORDER BY p.parent;
查询的细微差别取决于未公开的细节。
例如,要包含没有设备的父母,并优化每个孩子可能多行的性能,请使用
LEFT JOIN
,并在连接之前聚合每个孩子的计数:
SELECT p.parent AS name, sum(c.ct) AS count
FROM parent p
LEFT JOIN (
SELECT c.name, count(*) AS ct
FROM child c
GROUP BY 1
) c USING (name)
GROUP BY 1
ORDER BY 1