PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Bedingung für die Anzahl der zugehörigen Datensätze in SQL

Sie können die Unterabfrage in einen lateralen Join umwandeln:

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