Re: A function to find errors in groups in a table

Steve Midgley <science@misuse.org>

From: Steve Midgley <science@misuse.org>
To: Shaozhong SHI <shishaozhong@gmail.com>
Cc: pgsql-sql <pgsql-sql@lists.postgresql.org>
Date: 2022-06-09T19:16:12Z
Lists: pgsql-general, pgsql-sql
On Thu, Jun 9, 2022 at 6:37 AM Shaozhong SHI <shishaozhong@gmail.com> wrote:

> There is a table full of grouped values like the following
>
> nodeid     link_type      primary
> 11           outflowlink       1
> 11              inflowlink      1
> 11              outflowlink     2
>
> Primary of 1 indicates a primary water course.  Primary of 2 indicates a
> secondary water course.
>
> Obviously, one of the out flow links is an error, as its primacy value is
> 2.  It is wrong that water flows from a primary water course into a
> secondary water course.
>
> How can a function can be designed to find and report such errors?
>

Is the problem that there exists this row:

11              outflowlink     2

But there is no corresponding row:

11              inflowlink     2

So that you need to find all "orphan" rows that don't have a corresponding
member with the opposing data field inflowlink or outflowlink where the
"primary" column is the join field between the two rows?

Thanks for clarifying your problem,
Steve