PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Condition sur le nombre d'enregistrements associés en SQL

Vous pouvez transformer la sous-requête en jointure latérale :

select h.*, u.no_users
from houses h
cross join lateral (
    select count(*) no_users
    from users u 
    where u.house_id = h.house_id and u.status = 'active'
) u
where 
    u.cnt >= 100
    and exists (
        select 1 
        from custom_values cv 
        where cv.house_id = h.house_id and cv.type = 'mandatory' and lower(cv.name) = 'red'
    )