Heim > Datenbank > MySQL-Tutorial > Wie zähle ich Zeilen in PostgreSQL mithilfe der WHERE- und Aggregate-Funktionen korrekt?

Wie zähle ich Zeilen in PostgreSQL mithilfe der WHERE- und Aggregate-Funktionen korrekt?

Barbara Streisand
Freigeben: 2024-12-25 12:06:16
Original
597 Leute haben es durchsucht

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

PostgreSQL WHERE-Zählbedingung

In PostgreSQL gibt die folgende Abfrage einen Fehler zurück:

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;
Nach dem Login kopieren
ERROR:  column "overall_count" does not exist
Nach dem Login kopieren

Der Grund für diesen Fehler ist dass die WHERE-Klausel auf eine Ausgabespalte „overall_count“ verweist, die noch nicht in der Tabellenstruktur definiert ist. Um dies zu beheben, müssen wir die Zählbedingung in die HAVING-Klausel verschieben, da sie sich auf ein Aggregatfunktionsergebnis bezieht, nachdem WHERE angewendet wurde.

Außerdem sollte die Abfrage auch einen LEFT JOIN anstelle eines regulären JOIN verwenden Vermeiden Sie den Ausschluss von Lizenzen ohne Protokolle und verwenden Sie count(b.license_id) oder count(*) für Effizienz und Klarheit.

Die richtige Abfrage sollte so aussehen dies:

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)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie zähle ich Zeilen in PostgreSQL mithilfe der WHERE- und Aggregate-Funktionen korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage