postgresql 在自引用表中使用组和计数进行选择的SQL语句

fv2wmkja  于 2023-06-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(90)

有一个表members如下所示:
| 水准仪|姓名|管理者| managedBy |
| - -----|- -----|- -----| ------------ |
| 一个|艾瑞克|||
| B|杰拉尔|一个| 1 |
| C类|亚历克西斯|2| 2 |
| 一个|乔纳森|||
| C类|多琳|2| 2 |
| B|杰伊|4| 4 |
| C类|罗宾|六| 6 |
| C类|维克托|六| 6 |
| C类|埃塞尔|六| 6 |
A级具有最高功率。A级的人不受任何人管理,他们有权管理B级的人B级人员管理C级人员。
如何编写一个SQL语句,允许计算A级的每个人有多少个C级的人,并将这个集合从最多到最少排序?
输出:
| 成员计数| memberCount |
| - -----| ------------ |
| 三个| 3 |
| 2| 2 |
谢谢你的任何建议。

wooyq4lh

wooyq4lh1#

这可以使用self join来完成,如下所示:

select A.name, count(C.managedby) as memberCount
from mytable A
inner join mytable B on A.id = B.managedBy
inner join mytable C on B.id = C.managedBy
group by A.name

结果:
| 成员数| membercount |
| - -----| ------------ |
| 三个| 3 |
| 2| 2 |
Demo here

相关问题