Warum würde DISTINCT COUNT () 9 anstelle von 1 zurückgeben?

7

Ich habe die folgende Aussage:

%Vor%

Bei dieser bestimmten Ergebnismenge wird, wenn ich DISTINCT und COUNT() entfernt habe, die Ergebnismenge neun Zeilen mit den exakt gleichen Daten zurückgeben. Wenn ich DISTINCT hinzufüge, bekomme ich eine Zeile. Hinzufügen von COUNT() Ich bekomme ein Ergebnis von neun, wo ich eins erwarte. Ich gehe davon aus, dass die Reihenfolge der Operationen mein Ergebnis beeinflusst, aber wie kann ich das beheben, damit ich das gewünschte Ergebnis bekomme?

HINWEIS: Dies ist ein Subselect innerhalb einer größeren SQL-Anweisung.

    
Mike Wills 15.05.2014, 21:14
quelle

3 Antworten

15

SELECT DISTINCT COUNT(Z.TITLE) zählt die Anzahl der Zeilen mit einem Wert für Z.TITLE (neun). Das DISTINCT ist überflüssig, da das COUNT bereits die Zeilen aggregiert hat.

SELECT COUNT(DISTINCT Z.TITLE) zählt die Anzahl der verschiedenen Werte in Z.TITLE (eins).

    
SQLFox 15.05.2014, 21:23
quelle
3

Der COUNT führt zu einem neuen Datensatz, der die Anzahl der Elemente in der SELECT-Anweisung enthält. DISTINCT sucht nach den Ergebnissen von COUNT, das ist doch nur dieser einzelne Datensatz.

    
Jerry 16.05.2014 02:41
quelle
0

Wenn Sie den Titel wirklich wollen, dann sollte es

sein %Vor%

Das wird Ihnen etwas wie

geben %Vor%

oder wenn Sie mehrere Titel haben

%Vor%

, wobei die Zahl die Anzahl dieses eindeutigen Titels ist.

    
Leo 16.05.2014 14:13
quelle

Tags und Links