2016-04-23 4 views
-1

Ich habe eine Tabelle namens Review.
Es enthält Bewertungen von den Kunden auf die Reinigungsunternehmen, die sie zuvor erlebt haben.
Die selbe ReviewerID kann viele Reviews auf derselben Firma (jederzeit) geben.
1 GutachterID == 1 Person.
Ich entschied mich, jede Rezension zu machen, um eine ReviewID zu haben, da jede Rezension eine andere review_statement haben wird.
Also ist die ReviewID die PK und CompanyID ist die FK.Wie wird Count() verwendet, ohne den doppelten Wert in verschiedenen Zeilen in SQLITE zu zählen?

reviewID | reviewerID | companyID | Statement 
    001 | James216 | clean417 | "different statement" 
    002 | James216 | clean417 | "different statement" 
    003 | Lee_216 | clean417 | "different statement" 

Ich mag die Zahl der Unternehmen, die von jedem ReviewerID in der Datenbank überprüft erhalten.
Durch Bezugnahme auf die Tabelle ist die gewünschte Ausgabe James216 1 (1, weil James216 nur Unternehmen clean417 überprüft). Ich habe versucht, mit COUNT, aber es zählt die Nicht-Null-Zeile, wodurch die Ausgabe James216 2 wird.

Ich habe auch versucht, mit Select deutlich, aber die Ausgabe wird nicht korrekt sein.
Ich ernsthaft kann dies nicht herausfinden.

Antwort

0

Vom official docs:

In jeder Aggregatfunktion, die ein einziges Argument , diesem Argument kann das Schlüsselwort DISTINCT vorangestellt werden.

können Sie verwenden

SELECT DISTINCT Count(YourField) FROM YourTable 
1

Da ich nicht glaube, es unterstützt count(distinct), können Sie es lösen, indem eine einzigartige Untergruppe zu erstellen:

select reviewerID, count(companyID) 
    from (select distinct reviewerID, companyID 
      from Review) 
group by reviewerID; 
+0

unterscheidet sich gleich zu wählen, wählen Sie? @ user212514 –

+0

Nein, es ist nicht das Gleiche. 'select distinct' gibt Ihnen nur eine Zeile für James216/clean417 und nicht die zwei Zeilen, die sich in der aktuellen Tabelle befinden. – user212514

Verwandte Themen