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

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

Barbara Streisand
リリース: 2024-12-25 12:06:16
オリジナル
596 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート