|
[ goja76 @ 16.11.2010. 08:31 ] @
| Treba mi pomoc oko jednog izvjestaja u oracle 10g.
imam dve tabele:
lokal i pregled
id............code..........name
1..............10...........lokal1
2..............20...........lokal2
3..............30...........lokal3
itd
id.............lokal..............kreiran
1...............1..............12.11.2010
2...............2..............16.11.2010
3...............3..............12.11.2010
4...............6..............08.10.2010
itd.
select s.name,s.code,count(p.id)
from lokal s,pregled p
where p.lokal = s.id
group by s.name, s.code
order by s.code
ja sam dobio ukupan zbir po lokalima ali
bi trebao i po mjesecima.
ako moze neko da mi pomogne
|
[ bantu @ 16.11.2010. 09:29 ] @
Pokusaj da u group by stavis to_char(kreiran, 'yyyy.mm');
[ goja76 @ 16.11.2010. 09:48 ] @
dobio sam to sto sam trazio.
ali bilo bi kulturno ako bi jos mogao da ispisem i mjesec pored rezultata.
[ brzak @ 16.11.2010. 09:58 ] @
SELECT DECODE (TO_CHAR (kreiran, 'mm'),
'01', 'januar',
'02', 'februar',
'03', 'mart',
'04', 'april',
'05', 'maj',
'06', 'jun',
'07', 'jul',
'08', 'avgust',
'09', 'septembar',
'10', 'oktobar',
'11', 'novembar',
'decembar'
)
[ goja76 @ 16.11.2010. 11:28 ] @
sve je ok , radi , pokazuje tacan rezultat
znam da trazim previse ali posto imam stvari
iz prosle godine a sad i ova prolazi , pa kako i godine da razdvojim.
i jos gdje mogu da nadjem na netu literature na ovu temu.
hvala unaprijed
[ brzak @ 16.11.2010. 11:31 ] @
to_char(kreiran,'yyyy')
[ djoka_l @ 16.11.2010. 11:43 ] @
@goja76
Uloži malo para pa kupi knjigu, na primer "SQL za 21 dan" ili bilo koju sličnu. Zar ne primećuješ da već 6 meseci postavljaš slična početnička pitanja.
[ goja76 @ 16.11.2010. 12:08 ] @
Imam knjigu oracle database 10g od kevina loneya
ali sve sto radim i vjezbam radim na poslu uporedo
sa svojim redovnim stvarima koje nemaju veze sa ovim
pa malo ide sporije.hvala na sugestijama
[ djoka_l @ 16.11.2010. 12:31 ] @
Ne znam za tu knjigu, ali po naslovu bih rekao da obuhvata mnogo više nego SQL jezik.
Što se Oracle baze tiče, link prema dokumentaciji je http://www.oracle.com/pls/db112/homepage
Ono što je tebi, u stvari potrebno, je da naučiš SQL jezik, a za to je knjiga koju sam ti stavio gore. Ako možeš da nabaviš od nekoga knjige sa Oracle kurseva SQL i PL/SQL. onda još bolje. Inače kurs (u stvari dva ili tri kursa) traje 10 radnih dana (80 časova) i prilično je skup ako želiš da naučiš u sopstvenoj režiji (130 USD po danu). Počni od SQL tutorijala na netu (lepo u google staviš "SQL tutorial" i dobiješ bar 50 dobrih linkova).
[ goja76 @ 17.11.2010. 11:09 ] @
Narucio sam knjigu sql za 21 dan negdje je oko 25Eura.
Ali bi molio za jos samo jednu pomoc da zavrsim sa ovim upitom.
Kako da uradim totale za svaki lokal posebno znaci sve mjesece zbirno.
[ brzak @ 17.11.2010. 11:16 ] @
group by ce uvek da ti grupise po onome sto si zadao da ti grupise
moras da ukljucis sve kolone koje su ti ispred grupne funkcije, i to ti je to
nema tu mnogo filozofije ni mudrosti ;)
select lokal, to_char(kreiran,'yyyy'), sum(id)
...
group by lokal, to_char(kreiran,'yyyy')
[ djoka_l @ 17.11.2010. 11:26 ] @
Sad mi nije jasno šta pitaš. Tvoj prvi upit je vraćao count na nivou lokala, a sada pitaš kako da dobiješ to što si i tako dobio prvi put?
Ili je možda pitanje kako da pored counta na nivou meseca dobiješ i zbirno za lokal?
Ako je ovo drugo u pitanju, tu već izlaziš van okvira standardnog SQL jezika. Za tako nešto postoje analitičke funkcije u ORACLE, ali ne bih da te sada zbunjujem, kada još ni SQL-om ne vladaš baš najbolje. Drugi način je da koristiš neki reporting alat, na primer SQL*Plus.
Code (sql):
break ON code
compute SUM OF broj ON code
SELECT s.name,s.code,to_char(kreiran,'YYYY') godina, to_char(kreiran, 'MM') mesec, COUNT(p.id) broj
FROM lokal s,pregled p
WHERE p.lokal = s.id
GROUP BY s.name, s.code, o_char(kreiran,'YYYY'), to_char(kreiran, 'MM')
ORDER BY s.code
Obrati pažnju na to da "break" i "compute" nisu SQL komande već SQL*Plus komande koje služe za formatiranje izveštaja i računanje parcijalnih suma.
[ goja76 @ 17.11.2010. 12:04 ] @
Nisam bas bio jasan evo ovako:
lokal1...................januar............10
ferbruar..........40
mart...............25
total........................................XXX
loka2....................jan...itd
pozdrav
[ djoka_l @ 17.11.2010. 12:42 ] @
Ja sam ti baš to objasnio kako da uradiš.
Evo primera iz Oracle uputstva na http://download.oracle.com/doc...112/e16604/ch_six.htm#i1081008
Code:
COMPUTE SUM OF SALARY ON DEPARTMENT_ID
/
DEPARTMENT_ID JOB_ID LAST_NAME SALARY
------------- ---------- ------------------------- ----------
20 MK_MAN Hartstein 13000
************* ********** ----------
sum 13000
DEPARTMENT_ID JOB_ID LAST_NAME SALARY
------------- ---------- ------------------------- ----------
80 SA_MAN Russell 14000
Partners 13500
************* ********** ----------
sum 27500
DEPARTMENT_ID JOB_ID LAST_NAME SALARY
------------- ---------- ------------------------- ----------
90 AD_PRES King 24000
AD_VP Kochhar 17000
De Haan 17000
************* ********** ----------
sum 58000
6 rows selected.
[ NeoDesign @ 24.11.2010. 08:28 ] @
Mozes da iskoristis i GROUP BY ROLLUP, to je super nacin da nadjes medju-sume :)
[ goja76 @ 24.11.2010. 10:27 ] @
probao sam sa rollup funkcijom i dobijem to sto mi treba
ali i pored order by on nesto svoje slaze i dupla mi lokale
po godini i u toj koloni gdje je ispis godina za te duple stoji null.
hvala na pomoci
[ goja76 @ 24.11.2010. 11:07 ] @
Rjesio sam i ovo sa group by funkcijom
to jest kombinacijom group by XXXXX,rollup(XXXXXXX)
nisam znao da moze i ova varijanta.
sad jos samo da stavim umjesto ovo null da mi pise ukupno.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|