[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.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
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.pldoc.pisz.plpdf.pisz.pladwokat.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 |
|