pytanie o zapytanie (choinkę jednostronną)
JS - 25-07-2006 03:22
pytanie o zapytanie (choinkę jednostronną)
czesc mam proste pytanie z mqla (mssql)
powiedzmy ze mam tabele o kolumnie A z samymi jedynkami
A 1 1 1 1 1 1 1 1 1 1 1
(ew losowymi wartosciami)
chce takie zapytanie ktore w kolumnie B zsumuje mi wartosci z kolumny A "na bierząco" czyli byloby to cos takiego
A B 1 1 1 2 1 3 1 4 1 5
Najchętniej poznalbym ze dwie trzy alternatywne metody z informacja która jest lepsza i dlaczego,
dzięki z góry JS
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Wojtek pBT (prac) - 25-07-2006 03:23
JS napisał(a): > czesc mam proste pytanie z mqla (mssql) > > > powiedzmy ze mam tabele o kolumnie A z samymi jedynkami > > A > 1 > 1 > 1 > 1 > 1 > 1 > 1 > 1 > 1 > 1 > 1 > > (ew losowymi wartosciami) > > chce takie zapytanie ktore w kolumnie B zsumuje mi wartosci z kolumny A > "na bierząco" czyli byloby to cos takiego > > > A B > 1 1 > 1 2 > 1 3 > 1 4 > 1 5 > > Najchętniej poznalbym ze dwie trzy alternatywne metody > z informacja która jest lepsza i dlaczego, > > dzięki z góry JS >
Jako ze nie mowisz co to za silnik, to wybieram sobie MySQL.
Musisz skorzystac ze zmiennych.
SELECT @c:=0; SELECT @b:=0; SELECT a, IF(a = @c,@b:=@b + 1, (@c:= a, @b:= 1) ) AS foo, @b AS B FROM tab ORDER BY a;
Zapytanie nie testowane, ale mam nadzieje, ze kumasz o co tu chodzi. nie wiem czy przejdzie (@c:= a, @b:= 1), ale wszystko powinno byc OK
pBT
ps.: w innych silnikach to pewnie kursory...
Michał Kuratczyk - 25-07-2006 03:23
Wojtek pBT (prac) wrote: > ps.: w innych silnikach to pewnie kursory... W Oracle wystarczy SUM(): http://download-uk.oracle.com/docs/c...163.htm#i89126
-- Michał Kuratczyk
Wojtek pBT (prac) - 26-07-2006 01:29
Michał Kuratczyk napisał(a): > Wojtek pBT (prac) wrote: >> ps.: w innych silnikach to pewnie kursory... > W Oracle wystarczy SUM(): > http://download-uk.oracle.com/docs/c...163.htm#i89126 > nie no, teraz to mnie oracl zaskoczył... Żeby zwykłym SUM() takie coś zrobić...
<cite> A B 1 1 1 2 1 3 1 4 1 5 </cite>
pBT
Paweł Matejski - 26-07-2006 01:29
Wojtek pBT (prac) wrote: > Michał Kuratczyk napisał(a): >> Wojtek pBT (prac) wrote: >>> ps.: w innych silnikach to pewnie kursory... >> W Oracle wystarczy SUM(): >> http://download-uk.oracle.com/docs/c...163.htm#i89126 >> >> > nie no, teraz to mnie oracl zaskoczył... Żeby zwykłym SUM() takie coś > zrobić...
To raczej nie kwestia SUM(), a posiadania ROWNUM. Bardzo przydatny wynalazek. :)
-- P.M.
Michał Kuratczyk - 26-07-2006 01:29
Paweł Matejski wrote: >>>http://download-uk.oracle.com/docs/c...163.htm#i89126 >> nie no, teraz to mnie oracl zaskoczył... Żeby zwykłym SUM() takie coś >> zrobić... > To raczej nie kwestia SUM(), a posiadania ROWNUM. Bardzo przydatny > wynalazek. :) Nie no, samym rownumem, to tutaj nic nie zdziałamy. Do obliczenia tego, o co było pytanie (tzw. "running total") przydaje się właśnie SUM w wersji analitycznej (więc nie taki "zwykły SUM").
Funkcje analityczne w ogóle bardzo się przydają...
-- Michał Kuratczyk
Paweł Matejski - 26-07-2006 01:29
Michał Kuratczyk wrote: > Paweł Matejski wrote: >>>> http://download-uk.oracle.com/docs/c...163.htm#i89126 >>> nie no, teraz to mnie oracl zaskoczył... Żeby zwykłym SUM() takie coś >>> zrobić... >> To raczej nie kwestia SUM(), a posiadania ROWNUM. Bardzo przydatny >> wynalazek. :) > Nie no, samym rownumem, to tutaj nic nie zdziałamy. Do obliczenia tego, o co > było pytanie (tzw. "running total") przydaje się właśnie SUM w wersji > analitycznej (więc nie taki "zwykły SUM"). > > Funkcje analityczne w ogóle bardzo się przydają...
A racja. Za szybko myślałem. ;)
-- P.M.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
=?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?=
[ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?=
phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?=
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?=
[MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?=
mecze sie i mecze i nic - zapytanie czesciowe
zanotowane.pldoc.pisz.plpdf.pisz.plshutter.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|