Re: nextval per counted

From: Rob Sargent <robjsargent(at)gmail(dot)com>
To: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
Cc: "pgsql-generallists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: nextval per counted
Date: 2023-01-27 21:41:04
Message-ID: 4651a0e5-9ef4-f09f-067a-36907e34a1e4@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 1/27/23 14:31, David G. Johnston wrote:
> On Fri, Jan 27, 2023 at 2:25 PM Rob Sargent <robjsargent(at)gmail(dot)com> wrote:
>
> On 1/27/23 14:20, David G. Johnston wrote:
>> On Fri, Jan 27, 2023 at 1:59 PM Rob Sargent
>> <robjsargent(at)gmail(dot)com> wrote:
>>
>> I'm trying to craft SQL to invoke a sequence nextval once per
>> grouped value.
>>
>>
>> This seems like a very unusual usage of nextval/sequences...
>>
>> with cleanup as (
>> select DISTINCT e.ma <http://e.ma>, coalesce(e.pa <http://e.pa>,
>> 'fix') as pa from ...
>> ), compute as (
>> select ma, pa, nextval(...) from cleanup
>> )
>> select * from compute ... -- do whatever else you want
>>
>> So far I have this:
>>
>> with husb as(
>> select e.ma <http://e.ma>, count(distinct coalesce(e.pa
>> <http://e.pa>, nextval('egogen')::text)) as mates
>> from emp_all_by3 e group by e.ma <http://e.ma> order by mates
>> )
>> select mates, count(*)
>> from husb
>> group by mates order by mates desc;
>>
>> Your "order by mates" in the CTE is totally pointless and wasting
>> resources.
>>
>> David J.
>>
> Yeah, it wasn't when that was the last bit executed...
>
> Seems asking a sequence for an id isn't too unusual?  Or are they
> specifically intended for primary keys?
>
>
> Yes, their design is excellent for surrogate primary keys.  I don't
> even know what to call what you are doing but it isn't that.  It seems
> like some form of counting but stuff like "row_number" and "count"
> perform that function.  I don't think I'd trust using them as a
> counter...for that I'd do counting in the query then have a separate
> aspect, in user-space, not the system catalogs, that increments a counter.
>
> David J.
>
Yeah, in this case I'm actually trying to assign an id in place of a
null, but only one id for all null for one ma.  One thought was to
simply use the "ma" value but the table constraints are such that that
cannot be.

TL/DR
This is pedigree  ego/ma/pa triplet work.  Set of ego with a mother and
missing father can be considered a sibship (one mother/father pair) or a
"half-sibship" where each child get assigned a unique father (one
mother/N fathers).  In that latter case, the sequence works perfectly. 
We don't allow for mother/mother, the analysis tools are not up for that
(yet).

Thanks for your time,
rjs

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Ron 2023-01-28 02:26:31 Re: Indexes mysteriously change to ON ONLY
Previous Message David G. Johnston 2023-01-27 21:31:14 Re: nextval per counted