Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Komplikovano sumiranje

[es] :: Baze podataka :: Komplikovano sumiranje

[ Pregleda: 4144 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Komplikovano sumiranje09.07.2008. u 23:53 - pre 191 meseci
Ima li neko ideju kako da ovo rešim (dajem uprošćenu postavku): imam dve tabele Tabela_1 i Tabela_2 koje izgledaju ovako:
Code:

Tabela_1
Datum        Predmet    Kolicina
...
2008-05-04    a    5
2008-05-04    a    4
2008-05-04    a    1
2008-05-04    b    2
2008-05-04    b    7
2008-05-04    b    4
...


Tabela_2
Datum        Predmet    Kolicina
...
2008-05-04    b    2
2008-05-04    b    3
2008-05-04    b    5
2008-05-04    c    2
2008-05-04    c    6
2008-05-04    c    1
...


Treba mi upit koji će podatke iz ove dve tabele sumirati u ovom obliku:

Code:

Datum        Predmet    Sum_1    Sum_2
...
2008-05-04    a    10    0
2008-05-04    b    13    10
2008-05-04    c    0    9
...


Sum_1 je suma koja odgovara predmetu i datumu iz prve, a Sum_2 iz druge tabele.

Napominjem da se svi predmeti za određeni datum ne moraju pojaviti u obe tabele.
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
93.86.124.*



+41 Profil

icon Re: Komplikovano sumiranje10.07.2008. u 02:37 - pre 191 meseci
Nesto bas ne verujem da TI ne znas resenje, ali hajde

Code:

SELECT Datum, Predmet, SUM(Kolicina1) AS Sum_1, SUM(Kolicina2) AS Sum_2 
FROM (
    SELECT Datum, Predmet, Kolicina AS Kolicina1, 0 AS Kolicina2 FROM Tabela_1 
    UNION ALL 
    SELECT Datum, Predmet, 0 AS Kolicina1, Kolicina AS Kolicina2 FROM Tabela_2
) AS Promene 
GROUP BY Datum, Predmet


Ako si mislio bez unije i bez varijante sa referenciranjem na podupit onda javi.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Komplikovano sumiranje10.07.2008. u 08:02 - pre 191 meseci
Iskreno, UNION u podupitu mi uopšte nije padao na pamet. Hvala puno, ovako na prvu loptu izgleda da radi!
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
93.86.124.*



+41 Profil

icon Re: Komplikovano sumiranje10.07.2008. u 08:46 - pre 191 meseci
Ja sam mislio da nam postavljas nesto iz kolekcije "SQL Mozgalice" i da vec imas pripremljeno resenje

Mislim da se tesko moze izbeci UNION bez obzira koju varijaciju upita da izvedes (naravno, dok se srki ne javi sa nekim resenjem iz oracle-a)
 
Odgovor na temu

zmau
Dragan Jovanović
programer
Šabac

Član broj: 80834
Poruke: 290
88.200.65.*



+80 Profil

icon Re: Komplikovano sumiranje13.07.2008. u 10:59 - pre 191 meseci
Bez uniona ? Recimo ovako :

Code:

select coalesce(t1.predmet, t2.predmet), coalesce(t1.datum, t2.datum), coalesce(t1.kolicina1, 0) kol1, coalesce(t2.kolicina2, 0) kol2
from
(
   select predmet, datum, sum(kolicina) as kolicina1
   from tabela_1
   group by predmet, datum
) t1
full outer join
(
   select predmet, datum, sum(kolicina) as kolicina2
   from tabela_2
   group by predmet, datum
) t2
on t1.predmet = t2.predmet and t1.datum = t2.datum

it works on my machine
 
Odgovor na temu

ilkeNo1
Miloš Ilić
bg

Član broj: 37476
Poruke: 111
*.adsl-a-1.sezampro.yu.



+2 Profil

icon Re: Komplikovano sumiranje24.08.2008. u 22:36 - pre 189 meseci
A kako bi sumirali ovako nesto:
Code:

Tabela_1
Datum        Predmet    Kolicina
...
2008-05-04    a    5
2008-05-04    a    -4
2008-05-04    a    -2
2008-05-04    a    5
2008-05-04    a    4
2008-05-04    a    1
2008-05-04    b    2
2008-05-04    b    7
2008-05-04    b    -4
2008-05-04    b    2
2008-05-04    b    7
2008-05-04    b    4
...

u ovo:
Code:

Tabela_1
Datum        Predmet    Kolicina
...
2008-05-04    a    5
2008-05-04    a    -6
2008-05-04    a    10
2008-05-04    b    9
2008-05-04    b    -4
2008-05-04    b    13
...

Hvala vam unapred.
"Izgubljeno je samo ono cega se odreknemo"
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Komplikovano sumiranje26.08.2008. u 13:54 - pre 189 meseci
@IlkeNo1:

ne moze ovo sto si trazio. Nisi dao dovoljno podataka u Tablea_1. kolko vidim, na dan 2008-05-04 , za proizvod 'A' prvo si 'sabrao' vrednost 5, pa si onda sabrao dve negatibne vrednosti, pa onda tri pozitivne za isti dan i isti proizvod. Znaci, sabirane se zasniva na odrdjenom redosldu redova u tabeli. Tu je problem. nemas nista u Tablea_1 sto bi garantovalo redosled koji si npisao u primeru. Moras da imas jes neku kolonu ili kolone koje bi omogucile da se dobije tacan reosled pre sabiranja.

Ako ti Datum recimo sdrzi i minute i sekunde, pa je jos UNIQUE, onda bi moglo. Ili da imas neki brojac redova, pa to upotrebis sortiras redove pre sabiranja.

 
Odgovor na temu

ilkeNo1
Miloš Ilić
bg

Član broj: 37476
Poruke: 111
*.adsl-a-1.sezampro.yu.



+2 Profil

icon Re: Komplikovano sumiranje27.08.2008. u 17:09 - pre 189 meseci
Citat:
Ako ti Datum recimo sdrzi i minute i sekunde, pa je jos UNIQUE, onda bi moglo.


Zadrzimo se na ovoj recenici. Kako bi se to izvelo? Zamisli samo da imas UNIQUE ID umesto sekundi i munuta.
Dakle, kako izrsiti sazimanje?
Code:
Tabela_1
ID    Datum        Predmet    Kolicina
...
100     2008-05-04    a    5
101     2008-05-04    a    -4
102     2008-05-04    a    -2
103     2008-05-04    a    5
104     2008-05-04    a    4
105     2008-05-04    a    1
106     2008-05-04    b    2
107     2008-05-04    b    7
108     2008-05-04    b    -4
109     2008-05-04    b    2
110     2008-05-04    b    7
111     2008-05-04    b    4
...

Pada mi na pamet da se naprave 2 odvojene za plus i minus, pa da se gleda ID u novim tabelama i da ako fali negde, da se prethodni sumiraju, ali ne znam kako da napisem to.
"Izgubljeno je samo ono cega se odreknemo"
 
Odgovor na temu

Getsbi

Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Komplikovano sumiranje27.08.2008. u 17:49 - pre 189 meseci
Jezički definisano tvoje pravilo sumiranja bi galsilo:
"Sabiraj od početka skupa prema kraju u okviru istog dana količine istog predmeta dok se ne promeni predznak i to prikaži kao zaseban zapis (zbir). Potom nastavi sabiranje po istom pravilu."

Problem sa SQL-om je što to nje proceduralan jezik, već upitni i nema Do While.... petlje sa mogućnošću ispitivanja predznaka. Ili možda grešim?

 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Komplikovano sumiranje28.08.2008. u 15:30 - pre 189 meseci
Citat:
Zadrzimo se na ovoj recenici. Kako bi se to izvelo? Zamisli samo da imas UNIQUE ID umesto sekundi i munuta.
Dakle, kako izrsiti sazimanje?


Nemoj da ocekujes da u odgovoru dopunjavamo pitanje. Pitanje je postavljeno tako da nije postojalo nista sto bi pomoglo utvrdjivanju redosleda, i za takav slucaj nema resenja. Posto si uveo ID i pretpostavku da se redosled pomocu tog ID uspostavlja, mozemo da razmotrimo resenje.

Medjutim, da bi ustedeo vreme ljudima koji odgovaraju, daj nam jendu CREATE TABLE naredbu i nekoliko INSERT INTO sa test podacima da imamo sa cim da radimo. Svaki iole komplikovani SELECT mora da se proveri pre nego damo odgovor.

 
Odgovor na temu

[es] :: Baze podataka :: Komplikovano sumiranje

[ Pregleda: 4144 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.