ホームページ >データベース >mysql チュートリアル >WHERE 関数と集計関数を使用して PostgreSQL で行を正しくカウントする方法

WHERE 関数と集計関数を使用して PostgreSQL で行を正しくカウントする方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-25 12:06:16598ブラウズ

How to Correctly Count Rows in PostgreSQL Using WHERE and Aggregate Functions?

PostgreSQL WHERE count 条件

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。