PostgreSQL では、次のクエリはエラーを返します:
SELECT COUNT(a.log_id) AS overall_count FROM "Log" as a, "License" as b WHERE a.license_id=7 AND a.license_id=b.license_id AND b.limit_call > overall_count GROUP BY a.license_id;
ERROR: column "overall_count" does not exist
このエラーの理由は次のとおりです。 WHERE 句が、テーブル構造にまだ定義されていない出力列「overall_count」を参照していること。これを修正するには、WHERE が適用された後の集計関数の結果を参照するカウント条件を HAVING 句に移動する必要があります。
さらに、クエリでは通常の JOIN の代わりに LEFT JOIN を使用する必要があります。ログなしでライセンスを除外することは避け、効率と明確さのために count(b.license_id) または count(*) を使用してください。
正しいクエリは次のようになります。このように:
SELECT a.license_id, a.limit_call , count(b.license_id) AS overall_count FROM "License" a LEFT JOIN "Log" b USING (license_id) WHERE a.license_id = 7 GROUP BY a.license_id HAVING a.limit_call > count(b.license_id)
以上がWHERE 関数と集計関数を使用して PostgreSQL で行を正しくカウントする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。