postgresql中的分层计数查询

时间:2018-01-09 19:01:35

标签: postgresql

我有一个简单的分层表(类似于员工/经理),我希望通过父节点显示下属的计数。

this article

考虑这个例子
WITH RECURSIVE subordinates AS (
  SELECT
    employee_id,
    manager_id,
    full_name
  FROM
    employees
  WHERE
    employee_id = 2
  UNION
  SELECT
    e.employee_id,
    e.manager_id,
    e.full_name
  FROM
    employees e
    INNER JOIN subordinates s ON s.employee_id = e.manager_id
) SELECT
    *
  FROM
    subordinates;

我需要做的是生成这样的输出:

id    full_name  subordinate_count 
----  ---------  -----------------
1     Alice      42
2     Bob        18
3     Charlie    4          

假设Alice是CEO,Charlie是低级别经理。

看起来您必须在联合查询的前半部分对一个子句进行硬编码才能使层次结构查询起作用。我尝试了几种方法,但没有任何工作。提前感谢任何可以提供帮助的人。

1 个答案:

答案 0 :(得分:0)

您可以尝试将此查询包装在外部查询中,并使用计数对full_name进行分组。

例如: select full_name,count(*)    from("你的递归查询")outer_query   group by outer_query.full_name;