同一表中不同列的自身id的SQL计数和
我有一个表,它自己引用(邀请)。这里有一个列同一表中不同列的自身id的SQL计数和,sql,postgresql,Sql,Postgresql,我有一个表,它自己引用(邀请)。这里有一个列invested\u by\u id,我想从中统计每个被邀请的患者档案的数量。我该怎么做?我应该使用另一个SELECT语句还是JOIN语句 我认为它将类似于count(选择*WHERE p.id=invested\u by\u id),但不确定放在哪里 SELECT p.first_name, FROM patient_profiles AS p 当表具有自引用时,您可以使用自联接进行查询: SELECT host.id , host.f
invested\u by\u id
,我想从中统计每个被邀请的患者档案的数量。我该怎么做?我应该使用另一个SELECT语句还是JOIN语句
我认为它将类似于count(选择*WHERE p.id=invested\u by\u id),但不确定放在哪里
SELECT p.first_name,
FROM patient_profiles AS p
当表具有自引用时,您可以使用自联接进行查询:
SELECT
host.id
, host.first_name
, host.last_name
, count(invitee.invited_by_id) as invited_count
FROM patient_profiles AS host
JOIN patient_profiles AS invitee ON invitee.invited_by_id = host.id
GROUP BY host.id, host.first_name, host.last_name
其思想是以不同的别名(上面的host
和invitee
将表连接到自身)。被邀请者通过invitee.invited\u by\u id=host.id
条件链接到其主机。之后,使用groupby
将结果展平,以生成配置文件列表以及计数
注意:上面不会显示不邀请任何人的个人资料。如果您想查看它们,请切换到
左侧外部联接
是的,您可以使用联接
来执行此操作
SELECT
p.id,
p.first_name,
COUNT(p2.id) AS "Invitations"
FROM patient_profiles p
LEFT JOIN patient_profiles p2 ON p2.invited_by_id = p.id
GROUP BY
p.id,
p.first_Name
请回答您的问题,并根据这些数据添加一些内容和预期输出。请你的问题-不要在评论中发布代码或其他信息。我想使用左外连接,计数(*)会变成什么?@user2954587在编辑之前计数会是1。编辑之后,它将为零。