SELECT
    dk.*,
    st_area (dk.geom :: geography) as area,
    st_asewkt (dk.geom) as ewkt
FROM
    "TB_GHDK" AS dk
WHERE
    ST_Contains (
        ST_GeomFromText (
            'POLYGON ((109.43177469802706 18.30810494563685, 109.43001133911511 18.290042431376694, 109.44640581116127 18.28656337190178, 109.45174354624606 18.308438554079647, 109.43177469802706 18.30810494563685))',
            4326
        ),
        dk.geom
    )
    AND ST_Area (dk.geom :: geography) >= 1000
    AND ST_Area (dk.geom :: geography) <= 2000;

AND NOT EXISTS (
    SELECT
        1
    FROM
        "TB_YJJBNTBH" AS nt
    WHERE
        ST_Intersects (dk.geom, nt.geom)
)
AND EXISTS (
    SELECT
        1
    FROM
        "TB_CZKFBJ" AS bj
    WHERE
        ST_Contains (bj.geom, dk.geom)
);