wie setzte ich eine Unterabfrage in meiner Aufagab ?

Hey leute,
habe im moment folgende Aufgabe zu bearbeiten.Es geht darum eine abfrage zu machen:
abfragen “aus welcher stadt die meisten kunden kommen” Abrage bilden welche stadt wieviele teilnehmer hat…
ich habe das erstmal so gemacht

select ort, count(ort) as "anzahl"
from kunden
group by ort
order by count(ort) DESC
limit 2;

nun gibt es aber noch die andere möglichkeit anstatt den limit befhel eine unterabfrage zu machen…
weiß jmd wie ich das machen könnte ??

LG

Die Abfrage leistet doch das, was Du willst, oder?

Andreas

ja schon,
aber wie gesagt müsste mit einer unterabfrage auch gehen, werden dann halt ein par mehr zeilen…
weil mit dem limit bin ich nicht ganz zufrieden da es den rest ja nur ausblendet
würd gerne wissen wie ich das eben mit einer unterabfrage schreibe…

gruß

Du hast es so gewollt:

test=*# select * from kunden ;
   ort
---------
 dresden
 berlin
 bonn
 dresden
 dresden
 berlin
(6 rows)

test=*# select ort, anzahl from (select ort, anzahl, row_number() over (order by anzahl desc) from (select ort, count(ort) as anzahl from kunden group by ort order by anzahl desc) foo) bla1 right join (select 1 as i union select 2) bla2 on bla1.row_number=bla2.i;
   ort   | anzahl
---------+--------
 dresden |      3
 berlin  |      2
(2 rows)

Ist das obfus genug?

Andreas

hahahahahah,
klasse da muss ich mich jetzt erstmal durch kämpfen :wink:

aber vielen dank schon mal, so in etwa habe ich mir das vorgestellt…
vielen dank für die Mühe …

gruß