On 1/27/23 14:31, David G. Johnston wrote:
On Fri, Jan 27, 2023 at 2:25 PM Rob Sargent <robjsarg...@gmail.com> wrote:
On 1/27/23 14:20, David G. Johnston wrote:
On Fri, Jan 27, 2023 at 1:59 PM Rob Sargent
<robjsarg...@gmail.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