Maison > base de données > tutoriel mysql > Comment compter correctement les lignes dans PostgreSQL à l'aide des fonctions WHERE et Aggregate ?

Comment compter correctement les lignes dans PostgreSQL à l'aide des fonctions WHERE et Aggregate ?

Barbara Streisand
Libérer: 2024-12-25 12:06:16
original
601 Les gens l'ont consulté

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

PostgreSQL WHERE count condition

Dans PostgreSQL, la requête suivante renvoie une erreur :

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;
Copier après la connexion
ERROR:  column "overall_count" does not exist
Copier après la connexion

La raison de cette erreur est que la clause WHERE fait référence à une colonne de sortie, "overall_count", qui n'est pas encore définie dans la structure de la table. Pour résoudre ce problème, nous devons déplacer la condition de comptage vers la clause HAVING car elle fait référence à un résultat de fonction agrégé après que WHERE ait été appliqué.

De plus, la requête doit également utiliser un LEFT JOIN au lieu d'un JOIN normal pour évitez d'exclure les licences sans aucun journal et utilisez count(b.license_id) ou count(*) pour plus d'efficacité et de clarté.

La requête correcte devrait ressembler à ceci :

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)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal