ďťż
 
[Oracle] =?ISO-8859-2?Q?Pro=B6ba_o_pomoc_przy_zapytaniu?= ďťż
 
[Oracle] =?ISO-8859-2?Q?Pro=B6ba_o_pomoc_przy_zapytaniu?=
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

[Oracle] =?ISO-8859-2?Q?Pro=B6ba_o_pomoc_przy_zapytaniu?=



AP - 28-02-2007 00:07
[Oracle] =?ISO-8859-2?Q?Pro=B6ba_o_pomoc_przy_zapytaniu?=
  Witam

Ponieważ zależy mi na czasie, a nie mam pomysłu, jak to zrobić,
proszę Szanownych Grupowiczów o pomoc.
Mam przykładowe dane w kolumnie:

45102000030005530
46102000160003030
12102000160003030
44102000299000200
45102000299000200
44102010130000000
44102010130000010
44102010130000020
44102010130000030

Chodzi mi o wybranie dwóch (obojętnie na jakiej zasadzie - może być
nawet losowo) reprezentantów, przy czym kryterium grupowania jest
w moim przypadku podciąg substr(nr,3,8).
Aha, wersja Oracle8i (wiem z doświadczenia, że niektóre "fajne" sztuczki
nie działają na niższych wersjach)

Z góry dziękuję i pozdrawiam,
Aleksander





Lucyna Witkowska - 28-02-2007 00:07

  AP <ap@op.pl> napisał:
> Mam przykładowe dane w kolumnie:

> 45102000030005530
> 46102000160003030
> 12102000160003030
> 44102000299000200
> 45102000299000200
> 44102010130000000
> 44102010130000010
> 44102010130000020
> 44102010130000030

> Chodzi mi o wybranie dwóch (obojętnie na jakiej zasadzie - może być
> nawet losowo) reprezentantów, przy czym kryterium grupowania jest
> w moim przypadku podciąg substr(nr,3,8).
> Aha, wersja Oracle8i (wiem z doświadczenia, że niektóre "fajne" sztuczki
> nie działają na niższych wersjach)

Bez sztuczek:
select max(nr) from tabelaA
group by substr(nr,3,8);

Pozdrowienia,
LW




AP - 01-03-2007 00:00

  Lucyna Witkowska napisał(a):
>
> Bez sztuczek:
> select max(nr) from tabelaA
> group by substr(nr,3,8);
>
> Pozdrowienia,
> LW

Dziękuję za odpowiedź, ale tak już próbowałem, jednak chodziło mi o coś
więcej, tzn. co najmniej dwie wartości z każdego podzbioru.
Można by też tak:
select max(nr),min(nr) from tabelaA
group by substr(nr,3,8);
ale nadal nie jest to uniwersalne rozwiązanie przedstawionego problemu,
a jedynie takie zastępcze.
Zastanawiam się, jak i gdzie uzyć np. warunku na rownum ?

Pozdrawiam,
Aleksander




Marek Horodyski - 01-03-2007 00:00
=?iso-8859-2?Q?Re:_=5BOracle=5D_Pro=B6ba_o_pomoc_przy_zapytan iu?=
 
Użytkownik "AP" <ap@op.pl> napisał w wiadomości
news:es3dh8$3m8$1@news.onet.pl...
> Lucyna Witkowska napisał(a):
>>
>> Bez sztuczek:
>> select max(nr) from tabelaA
>> group by substr(nr,3,8);
>>
>> Pozdrowienia,
>> LW
>
> Dziękuję za odpowiedź, ale tak już próbowałem, jednak chodziło mi o coś
> więcej, tzn. co najmniej dwie wartości z każdego podzbioru.
> Można by też tak:
> select max(nr),min(nr) from tabelaA
> group by substr(nr,3,8);
> ale nadal nie jest to uniwersalne rozwiązanie przedstawionego problemu,
> a jedynie takie zastępcze.
> Zastanawiam się, jak i gdzie uzyć np. warunku na rownum ?

Mysle ze musisz nie grupowac tylko funkcja statystyczna spartycjonowac wynik
po substr( nr, 3, 8), i brac z kazdej partycji <= 2.
Cos takiego :

select * from (
select nr, SubStr( nr, 3, 8), row_number() over( PARTITION BY substr( nr, 3,
8) ORDER BY numer DESC) costam
) where costam <= 2

Pozdrawiam,
Marek Horodyski





AP - 01-03-2007 00:00

  Marek Horodyski napisał(a):
>
> Mysle ze musisz nie grupowac tylko funkcja statystyczna spartycjonowac
> wynik po substr( nr, 3, 8), i brac z kazdej partycji <= 2.
> Cos takiego :
>
> select * from (
> select nr, SubStr( nr, 3, 8), row_number() over( PARTITION BY substr(
> nr, 3, 8) ORDER BY numer DESC) costam
> ) where costam <= 2
>
> Pozdrawiam,
> Marek Horodyski

Super! O to właśnie chodziło!
Wprawdzie zabrakło from tabela, ale z tym już sobie poradziłem.
Ostatecznie - być komuś się kiedyś skorzysta - zapytanie wygląda tak:

select * from (
select nr, SubStr( nr, 3, 8), row_number() over( PARTITION BY substr(
nr, 3, 8) ORDER BY nr DESC) costam from tabela)
where costam <= 2

Dziękuję bardzo za pomoc. A już myślałem sądząc po braku kolejnych
podpowiedzi, że to jakiś trudny problem.

Pozdrawiam,
Aleksander
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle 19g +Insert +Insert +Insert... Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO MSSQL Express czy Oracle Express Czy zna (obsługuje) ktoś program Iso Draw ? MYSQL - kodowanie w ISO-PL strona plus baza w iso do utf-8 Kodowanie: z iso na utf [Oracle, Toad] Zaladowanie obiektu w TOAD [Oracle][Reports30] 10G nie dziala razem z Reports3.0 [Oracle] catalog.sql i catproc.sql - bledy
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • adwokat.keep.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