2017-07-06 2 views
1

Ich bin ziemlich neu in SQL und ich versuche, eine Abfrage zu erstellen, in welchen Ländern nur 3 spezifische Sprachen (Spanisch, Italienisch, Deutsch) sind Sprachen gesprochen und keine andere zu bestimmen versucht.Wie kommt mein count() Bewertung?

Die Ausgabe sind alle Länder, die mindestens 1 der oben genannten Sprachen haben. Wie kommt es, dass sie den Test "= 3" bestehen?

+0

Was Sie, dass die Zählung Anweisung innerhalb der 'having' Klausel erwarten, zu tun? Die Anzahl wird 1 oder 5, x Male zurückgeben. Sie zählen, wie oft ein Wert zurückgegeben wird, aber wie lautet die 1 und 5 in der case-Anweisung? – Charleh

Antwort

1

Der Grund dafür ist, dass count(1) = count(5). count() zählt die Anzahl der nicht NULL Werte.

Sie beabsichtigen sum():

select country 
from langusage 
group by country 
having sum(case when iso in ('spanish', 'german', 'italian') then 1 else 5 end) = 3 
+0

Kann mir jemand erklären, wofür die Case-Anweisung steht? Warum 1 oder 5? – Charleh

+0

@Charleh. . . Das OP versucht nur Werte einzugeben, bei denen die drei Sprachen zu 3 addiert werden, aber nichts anderes. –

+0

Gordon Linoff korrekt –