SQL Select

Hallo, könnte jemand drüber schauen und gucken, ob ich es richtig gemacht habe?

Aufgabenstellung:
Ermitteln Sie die passenden SQL-Statements zu den nachfolgenden Fragen und tragen Sie sie entweder hier (jeweils unter der Fragestellung) oder auf einem gesonderten Blatt (Word oder Textdatei mit Angabe der Nummer) ein. 1. Alle vorkommenden Regionen sollen angezeigt werden. 2. Die Staatennamen samt Bevölkerungsdichte sollen angezeigt werden. 3. Wie 2), aber geordnet nach Bevölkerungsdichte (die größten zuerst). 4. Wie 3) aber ausschließlich für europäische große Flächenstaaten (> 200.000 sqm). Fläche und Bevölkerung sollen ebenfalls angezeigt werden. 5. Alle Staaten, die mit „F“ beginnen, sollen angezeigt werden. 6. Alle Staaten und deren BNE sollen für diejenigen Staaten mit einer Bevölkerung zwischen 10 und 100 Mio. angezeigt werden, sortiert nach BNE (aufsteigend). 7. Die Staaten Südamerikas und deren Bevölkerung sollen angezeigt werden, und zwar auf Millionen gerundet. 8. Es sollen alle Staaten aufgelistet werden, die ein höheres BNE als Deutschland haben. 9. Wie 8), nur diesmal auf das Pro-Kopf BNE bezogen.
 

Anhänge

  • SQL Hausaufgabe.pdf
    83,4 KB · Aufrufe: 0

Jw456

Top Contributor
Einen Tipp schaue dir an wie du Spalten Bezeichner mit "Sonder und Leerzeichen" angeben musst.
 
Zuletzt bearbeitet:

Oneixee5

Top Contributor
8. und 9. würde man nicht so machen. Das wäre viel zu langsam. Eher mit einem SELF-JOIN:
SQL:
SELECT t2.*
FROM TableName as t1
  INNER JOIN TableName as t2 on t2.gdp > t1.gdp
WHERE t1.states = 'Germany'
Tabellenspalten würde man nicht mit Leerzeichen im Namen anlegen, stattdessen verwendet man einen Unterstrich: name_of_states
Umlaute würde man entsprechend umschreiben: ue, oe usw., ansonsten siehe #3

9 würde ich mit einer with-clause und einem self-join lösen. das ist bestimmt die schnellste Lösung:
SQL:
WITH
my_view as (
  SELECT
    id,
    name_of_states,
    gdp,
    gdp / population as bne
  FROM TableName
)
SELECT t2.*
FROM my_view as t1
  INNER JOIN my_view as t2 on t2.bne > t1.bne
WHERE t1.states = 'Germany'
Aber keine Ahnung ob das eurem Wissensstand entspricht.
 

Neue Themen


Oben