で検索する場合、私は次のクエリを持っている:PostgreSQLの誤った結果のcreated_at
SELECT
COUNT(sr.id) AS total,
COUNT(sr.id) FILTER (where (raw #>> '{survey, declined}' IS NULL) OR (raw #>> '{survey, declined}' = 'false')) AS completed,
COUNT(sr.id) FILTER (WHERE (raw #>> '{survey, declined}' = 'true')) AS denied
FROM survey_results sr
LEFT JOIN clients c ON c.id = sr.client_id
LEFT JOIN facilities f ON f.client_id = c.id
WHERE
sr.created_at >= '2005-07-01T08:00:00+00:00' AND
sr.created_at <= '2005-08-02T07:59:59+00:00' AND
4 IS NULL OR sr.client_id = 4 AND
NULL IS NULL OR f.id = NULL
;
問題は、これらのcreated_atフィルタが使用されていないということです。また、異なる時間に作成されたレコードも返します。これをどうすれば解決できますか?あなたは、ブラケットとグループ句に必要 、複数のANDおよび1つを有するまたはWHERE句の作業のいずれかを作る
OR私は –
が、私はそれを試してみましたが、問題を解決しないと仮定し、ブラケットを必要とします。 –
でも '4 is null'は常にfalseなので、他のANDと同じグループに属することは、グループ全体をfalseにします。 –