Jeste Oracle
to dva puta FROM je slucajno jer sam iz glave pisao pojednostavljeniji upit. Nisam mogao da kopiram originalni zbog nekih korporacijskih pravila o zastiti podataka blabla
Uslov od milion dinara me ne interesuje u ovoj prici. Dao sam samo primer da umesto toga od milion mi treba samo top 10 po gradovima.
Gledam ovaj tvoj upit sada i nije mi jasno šta radi ovo
Code:
ROW_NUMBER() OVER (partition BY grad ORDER BY SUM(promet) DESC
ali sutra ću probati i pročitati malo o tome. Pretpostavljam da je to to.
Ja sam se zlopatio i napravio neki frankenštajnski upit koji mi završava posao ali siguran sam da postoji neka jednostavnija metoda kao ovo što si napisao. A bilo je tipa
Code (sql):SELECT * FROM
(SELECT p.grad, p.kupac, SUM(p.promet) AS vrednost FROM prodaja p WHERE p.datum BETWEEN trunc(sysdate-30) AND trunc(sysdate) AND town = 1 GROUP BY p.grad, p.kupac ORDER BY 3 DESC) WHERE rownum <11
UNION ALL
(SELECT p.grad, p.kupac, SUM(p.promet) AS vrednost FROM prodaja p WHERE p.datum BETWEEN trunc(sysdate-30) AND trunc(sysdate) AND town = 2 GROUP BY p.grad, p.kupac ORDER BY 3 DESC) WHERE rownum <11
UNION ALL
(SELECT p.grad, p.kupac, SUM(p.promet) AS vrednost FROM prodaja p WHERE p.datum BETWEEN trunc(sysdate-30) AND trunc(sysdate) AND town = 3 GROUP BY p.grad, p.kupac ORDER BY 3 DESC) WHERE rownum <11
I tako za preko 20 gradova :). S tim što mi je izveštaj još mnogo komplikovaniji, spojeno 5-6 tabela sa povezivanjem po više ključeva, gomilom uslova...