Supondo que os limites das caixas delimitadoras estejam no mesmo sistema de referência espacial que as coordenadas armazenadas, e você sabe qual operador espacial (interseção ou contido por) é necessário:
SELECT *
FROM my_table
WHERE coordinates
&& -- intersects, gets more rows -- CHOOSE ONLY THE
@ -- contained by, gets fewer rows -- ONE YOU NEED!
ST_MakeEnvelope (
xmin, ymin, -- bounding
xmax, ymax, -- box limits
my_srid)
Como alternativa, se você preferir o som de "contém" (em vez de "contido por"), a WHERE
cláusula deve ser invertida:
WHERE ST_MakeEnvelope (...)
~ -- contains, gets same fewer rows
coordinates
PS: Dado (pelo OP após o post acima) que os registros são pontos simples, acho que a diferença entre "interseções" e "contenção" se torna muito sutil, afetando apenas os pontos nas bordas da caixa delimitadora.