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
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 |