[lug-ld] SQL Frage

Ekki Plicht (DF4OR) ekki at plicht.de
Di Sep 23 23:43:16 CEST 2014


Guten Tag :)
Ich hätte gerne mal ein Problem. Wieder mal komme ich bei einer SQL-Abfrage
nicht so recht weiter.


Gegeben sei eine Tabelle mit Datum, Land, Umsatz. Durch eine simple Abfrage
bekomme ich die Top 3 umsatzstärksten Länder über den gesamten Zeitraum
raus:

http://sqlfiddle.com/#!2/789b8a/3/0

Das ist aber nicht das Ziel, vielmehr möchte ich haben:
Eine Liste aller Top 3 Länder über die Zeit (je Monat), sortiert nach
Monat, dann Umsatz.

Ich kann natürlich die Top 3 Länder auslesen und manuell in die WHERE
clause einbauen, aber das ist ja langweilig. Die Top 3 können sich ja auch
mal ändern, darum soll das Resultat der ersten Abfrage (Wer sind die Top 3
heute?) als WHERE clause in die zweite Abfrage einfliessen. Ich weiss das
ich die erste Abfrage noch anpassen muss, damit pro Datensatz nur das Land
zurĂĽckgeliefert wird.

Ich weiss das es sowas wie Subqueries gibt, habe damit aber noch nie so
recht Erfolg gehabt. Oder ich bastele mir programmatisch eine WHERE land=?
OR land=? or land=? Abfrage...
Aber ich hätte gerne gelernt wie ich das nur mit SQL hinbekomme.

Bonus-Komplikation:
Nun möchte ich eine Liste wie oben, also die Umsätze der Top3-Länder über
die Monate, aber den Umsatz aller anderen Länder (Umsatzrang 4 bis
unendlich) zusammengefasst als 'Rest_of_World' haben.

Geht das auch noch mit reinem SQL? Oder packe ich sowas lieber in eine SP?
Oder mache das besser im umgebenden Programm (da ist es leicht).

Danke,
Ekki
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: http://lists.lug-ld.de/mailman/private/lug-ld/attachments/20140923/187c4ba5/attachment.htm