SQL: group by and having < Datenbank-Modelle < Schule < Informatik < Vorhilfe
|
Aufgabe 1 | For each region show the region and number of countries with populations of at least 10 million. |
Aufgabe 2 | List the regions with total populations of at least 100 million.
|
Guten Tag,
ich habe hier eine SQL-SELECT-Übung und finde den Fehler nicht (insgesamt 2 Aufgaben):
Meine Idee zu 1):
SELECT region, COUNT(name) FROM bbc GROUP BY region HAVING 'population' >= 10000000;
Meine Idee zu 2):
SELECT region FROM bbc GROUP BY region HAVING 'population' <= 100000000;
Ist jedoch beides falsch. Man kann die Ergebnisse auf http://www.sqlzoo.net/2.htm kontrollieren lassen (Abfrage kontrollieren)
Habe mich schon mit anderen beraten, die kommen auch nicht dahinter.
freundliche Grüße
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:20 Di 02.12.2008 | Autor: | Marc |
Hallo berger741,
> For each region show the region and number of countries
> with populations of at least 10 million.
> List the regions with total populations of at least 100
> million.
>
> Guten Tag,
>
> ich habe hier eine SQL-SELECT-Übung und finde den Fehler
> nicht (insgesamt 2 Aufgaben):
>
> Meine Idee zu 1):
> SELECT region, COUNT(name) FROM bbc GROUP BY region HAVING
> 'population' >= 10000000;
Zunächst wird doch sozusagen mit "SELECT region, COUNT(name) FROM bbc GROUP BY region" eine temporäre Tabelle mit zwei Spalten erstellt, die die Überschriften "region" und "count(name)" haben.
Mit HAVING filterst du nun diejenigen Zeilen aus dieser temporären Tabelle aus, deren Wert in der Spalte "population >= 10000000" ist. Das kann doch nicht funktionieren, da die Tabelle gar keine Spalte namens "population" hat.
Die Filterung muss also vor dem GROUP BY stattfinden, ist also ein WHERE statement:
SELECT region, COUNT(name) FROM bbc WHERE population >= 10000000 GROUP BY region;
Außerdem habe ich mal die Anführungszeichen um population weggelassen. Mit Anführungszeichen wird der SQL-Interpreter population als Zeichenkette interpretieren und nicht als das Attribut population.
> Meine Idee zu 2):
> SELECT region FROM bbc GROUP BY region HAVING 'population'
> <= 100000000;
Hier dieselben Probleme.
Viele Grüße,
Marc
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:41 Di 02.12.2008 | Autor: | berger741 |
Hallo Marc,
das mit der temporären Tabelle war mir garnicht bewusst, dies erklärt so einige andere Fehler. Vielen Dank dafür!
freundliche Grüße, und einen schönen (vor)-Abend.
|
|
|
|