sql >> Database >  >> RDS >> PostgreSQL

Veldwaarde ophalen uit een record die ervoor zorgt dat een aggregatievoorwaarde waar is

with agg as (
    select a, min(d) as d
    from x
    group by a
    having 1 = any(array_agg(b))
)
select distinct on (a, c)
    a, c, d
from
    x
    inner join
    agg using (a, d)
order by a, c

Als min(d) is niet uniek binnen de a groep, dan is het mogelijk om meer dan één corresponderende c te bestaan . Het bovenstaande levert de kleinste c op. Als je in plaats daarvan de grootste wilt doen

order by a, c desc


  1. AI gebruiken voor SQL Tuning voor een echt geautomatiseerd proces

  2. Oracle SQL-query om rijen met niet-numerieke tekens uit te sluiten

  3. Voorraadbeheer met aandelenopties

  4. 'stuff' en 'for xml path('')' van SQL Server in Postgresql