zwei SQL COUNT () Abfragen?

8

Ich möchte sowohl die Gesamtzahl der Datensätze in einer Tabelle als auch die Gesamtzahl der Datensätze, die bestimmte Bedingungen erfüllen, zählen. Ich kann dies mit zwei getrennten Abfragen tun:

%Vor%

Gibt es eine Möglichkeit, diese in einer Abfrage zu kombinieren, so dass ich zwei Felder in einer Zeile bekomme?

%Vor%

Wenn nicht, kann ich zwei Abfragen ausgeben und sie in eine Transaktion einfügen, so dass sie konsistent sind, aber ich habe gehofft, es mit einem zu tun.

edit: Ich bin am meisten besorgt über die Atomarität; Wenn zwei Unter-SELECT-Anweisungen benötigt werden, ist das OK, solange ein INSERT von irgendwo kommt, macht es die beiden Antworten nicht inkonsistent.

edit 2: Die CASE-Antworten sind hilfreich, aber in meinem spezifischen Fall können die Bedingungen einen JOIN mit einer anderen Tabelle enthalten (vergessen, dies in meinem ursprünglichen Post zu erwähnen, sorry), also vermute ich, dass dieser Ansatz nicht funktioniert.

    
Jason S 20.05.2009, 15:45
quelle

4 Antworten

22

Eine Möglichkeit besteht darin, die Tabelle mit sich selbst zu verbinden:

%Vor%

Eine andere Möglichkeit ist die Verwendung von Unterabfragen:

%Vor%

Oder Sie können die Bedingungen in einen Fall setzen:

%Vor%

Verwandte:

SQL Kombinieren mehrerer SELECT-Ergebnisse

    
Guffa 20.05.2009, 15:52
quelle
19

In Sql Server oder MySQL können Sie das mit einer CASE-Anweisung tun:

%Vor%

Bearbeiten: Dies funktioniert auch, wenn Sie ein JOIN in der Bedingung:

verwenden %Vor%

Die GROUP BY-Funktion stellt sicher, dass Sie nur eine Zeile aus der Haupttabelle finden.

    
Andomar 20.05.2009 15:47
quelle
7

Wenn Sie nur Zeilen zählen, können Sie einfach verschachtelte Abfragen verwenden.

%Vor%     
Middletone 20.05.2009 15:54
quelle
0

MySQL zählt keine NULL, also sollte das auch funktionieren:

%Vor%

Das funktioniert gut, wenn das QuailifiedCount-Feld von einem LINKEN JOIN kommt, und es ist Ihnen nur wichtig, ob es existiert. Um die Anzahl der Benutzer und die Anzahl der Benutzer zu ermitteln, die ihre Adresse eingegeben haben:

%Vor%     
Craig Lewis 20.05.2009 16:57
quelle

Tags und Links