sql >> Databáze >  >> RDS >> PostgreSQL

Získejte hodnotu pole ze záznamu, který způsobí, že agregovaná podmínka bude pravdivá

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

Pokud min(d) není v rámci a jedinečný skupina pak může existovat více než jeden odpovídající c . Výše uvedené vrátí nejmenší c. Pokud chcete místo toho to největší

order by a, c desc


  1. mysql Neplatný počet sloupců ve vstupu CSV při importu souboru csv

  2. Příkaz ALTER TABLE byl v konfliktu

  3. Po zablokování jedné transakce napříč verzemi SQL Server

  4. Proč se používá oddělovač s uloženou procedurou v mysql?