ďťż
 
[oracl] 8.1.7 - maxymalna wartosc ďťż
 
[oracl] 8.1.7 - maxymalna wartosc
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[oracl] 8.1.7 - maxymalna wartosc



Marek Horodyski - 12-11-2006 01:32
[oracl] 8.1.7 - maxymalna wartosc
  Cos nijak mi nie wychodzi :(
Jak z tabelki :

ID OD_KIEDY KWOTA
AAAATJ 200402 40
AAAATJ 200601 45
AAAATK 200402 8
AAAATK 200601 8
AAAATL 200402 3,2
AAAATL 200601 3,2
AAAATM 200402 0,8
AAAATM 200601 0,8

wybrac tylko te wiersze z kazdego ID, dla ktorego data OD_KIEDY jest
najwieksza.
Czy jest to mozliwe bez podzapytania ?

Pozdrawiam,
Marek Horodyski





Rafal M - 12-11-2006 01:32

  Marek Horodyski wrote:
> Cos nijak mi nie wychodzi :(
> Jak z tabelki :
>
> ID OD_KIEDY KWOTA
> AAAATJ 200402 40
> AAAATJ 200601 45
> AAAATK 200402 8
> AAAATK 200601 8
> AAAATL 200402 3,2
> AAAATL 200601 3,2
> AAAATM 200402 0,8
> AAAATM 200601 0,8
>
> wybrac tylko te wiersze z kazdego ID, dla ktorego data OD_KIEDY jest
> najwieksza.
> Czy jest to mozliwe bez podzapytania ?
>
> Pozdrawiam,
> Marek Horodyski

SELECT MAX(OD_KIEDY) FROM tab GROUP BY ID




Marek Horodyski - 12-11-2006 01:32

 
Użytkownik "Rafal M" <rafalm1980@gazeta.pl> napisał w wiadomości
news:efjkd3$r64$1@inews.gazeta.pl...
> Marek Horodyski wrote:
>> Cos nijak mi nie wychodzi :(
>> Jak z tabelki :
>>
>> ID OD_KIEDY KWOTA
>> AAAATJ 200402 40
>> AAAATJ 200601 45
>> AAAATK 200402 8
>> AAAATK 200601 8
>> AAAATL 200402 3,2
>> AAAATL 200601 3,2
>> AAAATM 200402 0,8
>> AAAATM 200601 0,8
>>
>> wybrac tylko te wiersze z kazdego ID, dla ktorego data OD_KIEDY jest
>> najwieksza.
>> Czy jest to mozliwe bez podzapytania ?
>>
>> Pozdrawiam,
>> Marek Horodyski
>
> SELECT MAX(OD_KIEDY) FROM tab GROUP BY ID

Ale wtedy gubie kwote - a to wlasnie o sume kwoty z poszczegolnych id na
dany moment mi chodzi.
Ta tabelke ma w 1 ms. Jakakolwiek zmiana, grupowanie itp. i juz klepsydre
mozna wlaczac.

Marek Horodyski




Halibut - 12-11-2006 01:32

 
Użytkownik "Marek Horodyski" <m.horodyski@pzuzycie.com.pl> napisał w
wiadomości news:efjit3$nio$1@nemesis.news.tpi.pl...
> Cos nijak mi nie wychodzi :(
> Jak z tabelki :
>
> ID OD_KIEDY KWOTA
> AAAATJ 200402 40
> AAAATJ 200601 45
> AAAATK 200402 8
> AAAATK 200601 8
> AAAATL 200402 3,2
> AAAATL 200601 3,2
> AAAATM 200402 0,8
> AAAATM 200601 0,8
>
> wybrac tylko te wiersze z kazdego ID, dla ktorego data OD_KIEDY jest
> najwieksza.

Witam,
Oto dwie propozycje (druga wersja powinna mieć lepszą wydajność):

Rozwiązanie 1: podzapytanie skorelowane

SELECT id,
od_kiedy,
kwota
FROM tabela b
WHERE od_kiedy =
(SELECT MAX(od_kiedy)
FROM tabela a
WHERE a.id = b.id);

Rozwiązanie 2: z użyciem funkcji analitycznych (w 8.1.7 powinny już być):

SELECT id,
od_kiedy,
kwota
FROM
(SELECT id,
od_kiedy,
kwota,
row_number() over(PARTITION BY id
ORDER BY od_kiedy DESC) porzadek
FROM tabela)
WHERE porzadek = 1;

pozdrawiam
Krzysztof Maciak





Marek Horodyski - 12-11-2006 01:32

  Użytkownik "Halibut" <halibut.kmac@o2.pl> napisał w wiadomości
news:efjoq4$2nh$1@atlantis.news.tpi.pl...
>
> Użytkownik "Marek Horodyski" <m.horodyski@pzuzycie.com.pl> napisał w
> wiadomości news:efjit3$nio$1@nemesis.news.tpi.pl...
>> Cos nijak mi nie wychodzi :(
>> Jak z tabelki :
>>

[ ... ]

> Witam,
> Oto dwie propozycje (druga wersja powinna mieć lepszą wydajność):
>

Z zapytania skorelowanego wlasnie to przerabialem. Powyzsza tabelke
uzyskiwalem w złączeniu w ciagu milisekundy. A juz skorelowane uzaleznienie
od daty trwalo ok. 7s. Wszelkie przerobki na LEWO = any( select ... ) lub
( 1, 2) in ( select 1, 2) nie dawaly polepszenia. Ale to 2 to wprost
rewelacja ! :)
O to mi chodzilo. Oracl musial miec takie future :)

Wielkie dzieki,
Marek Horodyski




Rafal M - 12-11-2006 01:32

  Marek Horodyski wrote:
>
> Użytkownik "Rafal M" <rafalm1980@gazeta.pl> napisał w wiadomości
> news:efjkd3$r64$1@inews.gazeta.pl...
>> Marek Horodyski wrote:
>>> Cos nijak mi nie wychodzi :(
>>> Jak z tabelki :
>>>
>>> ID OD_KIEDY KWOTA
>>> AAAATJ 200402 40
>>> AAAATJ 200601 45
>>> AAAATK 200402 8
>>> AAAATK 200601 8
>>> AAAATL 200402 3,2
>>> AAAATL 200601 3,2
>>> AAAATM 200402 0,8
>>> AAAATM 200601 0,8
>>>
>>> wybrac tylko te wiersze z kazdego ID, dla ktorego data OD_KIEDY jest
>>> najwieksza.
>>> Czy jest to mozliwe bez podzapytania ?
>>>
>>> Pozdrawiam,
>>> Marek Horodyski
>>
>> SELECT MAX(OD_KIEDY) FROM tab GROUP BY ID
>
> Ale wtedy gubie kwote - a to wlasnie o sume kwoty z poszczegolnych id na
> dany moment mi chodzi.
> Ta tabelke ma w 1 ms. Jakakolwiek zmiana, grupowanie itp. i juz
> klepsydre mozna wlaczac.
>
> Marek Horodyski

dlatego wlasnie Oracle jest gorszy od PostgreSQL, ktory ma DISTINCT :),
a tyle kosztuje, a taka mala funkcjonalnosc ;)




Halibut - 12-11-2006 01:32

 
>> Użytkownik "Marek Horodyski" <m.horodyski@pzuzycie.com.pl> napisał w
>> wiadomości news:efjit3$nio$1@nemesis.news.tpi.pl...
>>> Cos nijak mi nie wychodzi :(
>>> Jak z tabelki :
>>>
>
> ( 1, 2) in ( select 1, 2) nie dawaly polepszenia. Ale to 2 to wprost
> rewelacja ! :)
> O to mi chodzilo. Oracl musial miec takie future :)
>

Cieszę się, że informacje się przydały. Tu masz jeszcze krótką prezentację
kilku innych przydatnych funkcji analitycznych:
http://www.ploug.org.pl/szkola/szkol...06_KJ_Anal.pdf

pozdrawiam
Krzysztof Maciak




Marek Horodyski - 12-11-2006 01:33

 
Użytkownik "Rafal M" <rafalm1980@gazeta.pl> napisał w wiadomości
news:efjuje$76i$1@inews.gazeta.pl...
> Marek Horodyski wrote:
>>
>> Użytkownik "Rafal M" <rafalm1980@gazeta.pl> napisał w wiadomości
>> news:efjkd3$r64$1@inews.gazeta.pl...
>>> Marek Horodyski wrote:
>>>> Cos nijak mi nie wychodzi :(
>>>> Jak z tabelki :

[...]

> dlatego wlasnie Oracle jest gorszy od PostgreSQL, ktory ma DISTINCT :), a
> tyle kosztuje, a taka mala funkcjonalnosc ;)

Oracl tez ma DISTINCT, chociaz pewnie PostgreSQL ma go w wykonaniu
funkcyjnym a nie deklaratywnym.
Oracl ma odgromne mozliwosci na poziomie SQLa, a to duzy plus. Tylko to
wszystko trzba znac.
Nie wszystkie ksiazki i ksiazeczki o tym mowia.
Ta skladnia Krzyska z 2 przykladu chodzi wprost jak burza :)

Pozdrawiam,
Marek Horodyski




Paweł Matejski - 12-11-2006 01:33

  Rafal M wrote:
>
> dlatego wlasnie Oracle jest gorszy od PostgreSQL, ktory ma DISTINCT :),
> a tyle kosztuje, a taka mala funkcjonalnosc ;)

Oracle też ma.
Tobie zapewne chodzi o DISTINCT ON. :)

--
P.M.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Zwracanie wartości, z funkcji, w funkcji [Js, Ajax] Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ] Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird) Ms SQL Server 2000 i błąd przy nie wypełnionej wartościo w polusmalldatetime Jak wyswietlic dane z dwoch tabel gdy dla jednej z nich jest brak jest danej wartosci [mysql 4.0.24] INSERT do tabeli z automatyczną inkrementacją wartości pola. =?iso-8859-1?q?mysql_domyslna_wartosc_kom=F3rki?= [Oracle] PLSQL - wartosc z innego pola w zmienianaym rekordzie [MySQL] wektor wartosci jako typ danej? dynamiczny sql w plsql, szukanie wartosci w kolumnach
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • atanvarne633.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com