json_array_elemnts() in FROM in postgresql 9.3 acting as where clause
This query requests the cartesian product between incidents_incident and json_array_elements(...).

When one of the elements of a product is empty, the result is empty.

This result doesn't depend on the WHERE clause or the fact that one the product comes from json_array_elements(). An empty table would have the same effect.

Presumably you want an unconstrained LEFT JOIN instead of the cartesian product:

SELECT count(*)
FROM incidents_incident
LEFT JOIN json_array_elements(incidents_incident.incident_data -&gt; 'field_52ca447762ba2')
  ON (true)
WHERE resort_id = 1
AND dt_created &gt;= '2015-06-01 00:00:00'
AND dt_created &lt;= '2015-08-10 00:00:00';