Forum » Programiranje » postgresql - nasprotje od sum?
postgresql - nasprotje od sum?
boss-tech ::
Delam na tem primeru:
Se pravi da mi ta vrne seštevek(counter) zgrupiranih vrstic - grupira se po l_id ter stanju. Se pravi to mi dela ok. Kako pa
bi sedaj dobil razliko? Sem gledal, ampak nisem našel nasprotja od funkcije sum. Ima kdo kakšno idejo?
select l_id,sum(counter),state from data_retriever group by l_id, state order by l_id CREATE TABLE data_retriever ( id l_id character varying(50), state character varying, counter integer, c_date timestamp without time zone, )
Se pravi da mi ta vrne seštevek(counter) zgrupiranih vrstic - grupira se po l_id ter stanju. Se pravi to mi dela ok. Kako pa
bi sedaj dobil razliko? Sem gledal, ampak nisem našel nasprotja od funkcije sum. Ima kdo kakšno idejo?
McAjvar ::
Funkcija sum() vrne vsoto vrednosti polj grupiranih zapisov. Torej, ce sesede 3 vrstice, bo sum() vrnil vrednost (zapis1 + zapis2 + zapis3). Kaksno razliko pa rabis? Ali je to (zapis1 - zapis2 - zapis3), (zapis2 - zapis1 - zapis3), (zapis3 - zapis1 - zapis2)? Ce je vrednost v polju zapis1 5, v zapis2 10 in v zapis3 15, bo sum() vrnil (5+10+15) = 30. Razlike pa bi bile za zgornje kombinacije: -20, -10 in 0, recimo.
Ce na tem seznamu ali drugje med dokumentacijo ne najdes funkcije, ki jo potrebujes, bos moral najbrz sam spisati funkcijo, ki bo pocela to, kar rabis.
Ce na tem seznamu ali drugje med dokumentacijo ne najdes funkcije, ki jo potrebujes, bos moral najbrz sam spisati funkcijo, ki bo pocela to, kar rabis.
"[...] the advance of civilization is nothing
but an exercise in the limiting of privacy."
- Isaac Asimov
but an exercise in the limiting of privacy."
- Isaac Asimov
boss-tech ::
V bistvu nastavljeno da bi delal samo razliko med 2 vrsticama. Counterji pa se večajo vsak dan.
Ampak funkcije pa ne najdem...
Ampak funkcije pa ne najdem...
Zgodovina sprememb…
- spremenil: boss-tech ()
McAjvar ::
Verjetno funkcije ne bos nasel, ker vse agregatne funkcije delujejo nekako tako, da upostevajo _vse_ vrednosti, ki jih morajo obdelati. Nekako delajo na arrayu z vrednostmi, ki je velik od 0 do [stevila zapisov v result setu], niso omejene zgolj na 2 elementa.
"[...] the advance of civilization is nothing
but an exercise in the limiting of privacy."
- Isaac Asimov
but an exercise in the limiting of privacy."
- Isaac Asimov
boss-tech ::
Saj če delaš sum na grupi, potem ti pravilno izračuna. Vzame npr samo 2 vrstici in naredi sum.
Npr:
Npr:
"1";"Rešen";9;"2011-06-10 00:00:00" "1";"Rešen";7;"2011-06-09 00:00:00" "1";"Nerešen";14;"2011-06-09 00:00:00" "1";"Nerešen";12;"2011-06-10 00:00:00" Rezultat sum: "1";16;"Rešena" "1";26;"Nerešena"
Poldi112 ::
Namesto sum lahko daš max in min in ju odšteješ med seboj.
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.
McAjvar ::
Mhm, ampak zdaj pa dodaj se par zapisov. Recimo, ce imas naslednje zapise (ignoriram polje c_date):
Potem ti tvoj zgornji query vrne:
Funkcija sum() mora znat obdelat tudi to, kaksno razliko pa bi v takem primeru pricakoval?
Mislim, da bos v vsakem primeru moral spisati svojo agregatno funkcijo, kjer bos definiral, kaj naj baza naredi z vrednostmi.
l_id;state;counter "1";"Rešen";9 "1";"Rešen";7 "1";"Nerešen";14 "1";"Nerešen";12 "1";"Rešen";16 "1";"Rešen";32
Potem ti tvoj zgornji query vrne:
l_id;sum;state "1";26;"Nerešen" "1";64;"Rešen"
Funkcija sum() mora znat obdelat tudi to, kaksno razliko pa bi v takem primeru pricakoval?
Mislim, da bos v vsakem primeru moral spisati svojo agregatno funkcijo, kjer bos definiral, kaj naj baza naredi z vrednostmi.
"[...] the advance of civilization is nothing
but an exercise in the limiting of privacy."
- Isaac Asimov
but an exercise in the limiting of privacy."
- Isaac Asimov
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | ASP.NET, C# spletna aplikacija in dodajanje kontrol v run time-u programaOddelek: Programiranje | 999 (731) | kuall |
» | SQL poizvedbaOddelek: Programiranje | 619 (569) | frudi |
» | [Java]Branje podatkov iz datotekeOddelek: Programiranje | 2645 (1951) | jeryslo |
» | programiranje COddelek: Programiranje | 2424 (2286) | bozjak |
» | Nahrbtnik za prenosnikOddelek: Kaj kupiti | 1741 (1533) | Gandalfar |