Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
| Autor | Správa |
|---|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Zdravim. Potrebujem urobit jednoduchy select. Mam kniznicu (Library), v nej su zakaznici(Customers), ktory maju urcite pokuty za oneskorene vratenie knihy (Penalty). Select: 5 ľudia s najvyššími pokutami. Jeden vyber uz mam: Kód: select c2.first_name, c2.last_name from (select c.* from CUSTOMERS c where c.PENALTY IS NOT NULL order BY c.PENALTY DESC) c2 where rownum <= 5
No potrebujem este jeden, ktory vyberie to iste, len inym sposobom. Budem totizto robit testy. Riesenie mam: vybrat vsetko z tabulky, utriedit podla pokut, a LOOPom vyberiem prvych 5 zakaznikov. To riesenie sa mi vsak velmi nepozdava. Ma niekto lepsi napad?
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Kód: SELECT * FROM customers ORDER BY penalty DESC LIMIT 5
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 15.01.07 Prihlásený: 23.09.15 Príspevky: 186 Témy: 3 | 3 Bydlisko: ZV/BA |
LIMIT nejde na Oracle DBS, na to pozor, je to feature pre MySQL, PostGre atd. (ak teda nemas oracle, to co pisal BX je druhy sposob)
_________________ nb: Lenovo Thinkpad E520 (starsi pan uz), Fedora 20 / Win7 dualboot " 1000.times { puts "I will not spam on the boards" } " |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
No praveze to robim v ORACLE SQL developer...
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 15.01.07 Prihlásený: 23.09.15 Príspevky: 186 Témy: 3 | 3 Bydlisko: ZV/BA |
hmm, da sa pouzit este funkcia rank() myslim, od Oracle 9, priklad: Kód: SELECT ename, sal FROM ( SELECT ename, sal, RANK() OVER (ORDER BY sal) sal_rank FROM emp ) WHERE sal_rank <= 10;
cize to tvoje by som skusil Kód: SELECT c2.first_name, c2.last_name FROM (SELECT c.*, RANK() OVER (ORDER BY c.penalty) penalty_rank FROM customers c WHERE c.penalty IS NOT NULL) WHERE penalty_rank <= 5;
_________________ nb: Lenovo Thinkpad E520 (starsi pan uz), Fedora 20 / Win7 dualboot " 1000.times { puts "I will not spam on the boards" } " |
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Pripadne rovno ROW_NUMBER() 
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Dakujem. Matwej: tvoje riesenie funguje, ale tu poslednu podmienku ignoruje, teda selectne viacej riadkov(v mojom pripade 7) Citácia: SELECT c2.first_name, c2.last_name FROM (SELECT c.*, RANK() OVER (ORDER BY c.penalty DESC) penalty_rank FROM customers c WHERE c.penalty IS NOT NULL) c2 WHERE penalty_rank <= 5;
Pre uplnost 
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 15.01.07 Prihlásený: 23.09.15 Príspevky: 186 Témy: 3 | 3 Bydlisko: ZV/BA |
eee, myslim, ze to penalty_rank by malo byt c2.penalty_rank (chybicky no,  ), skus ci to pojde
_________________ nb: Lenovo Thinkpad E520 (starsi pan uz), Fedora 20 / Win7 dualboot " 1000.times { puts "I will not spam on the boards" } " |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Nefunguje to  Cez row_number() nieco mam, len neviem, ako vyberiem 5 zaznamov: Kód: SELECT c.FIRST_NAME, c.LAST_NAME, c.PENALTY, ROW_NUMBER() OVER (ORDER BY c.PENALTY DESC) FROM CUSTOMERS c WHERE c.PENALTY IS NOT NULL;
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Vnoreny select? Kód: SELECT first_name, last_name, penalty FROM (SELECT c.FIRST_NAME, c.LAST_NAME, c.PENALTY, ROW_NUMBER() riadok OVER (ORDER BY c.PENALTY DESC) FROM CUSTOMERS c WHERE c.PENALTY IS NOT NULL) WHERE riadok <= 5;
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Dakujem za pomoc. Vypisuje to chybnu specifikaciu: Citácia: 30484. 00000 - "missing window specification for this function" *Cause: All window functions should be followed by window specification, like <function>(<argument list>) OVER (<window specification>) *Action:
Aj by som si to sam opravil, no netusim kde je chyba. // Vazne by som to potreboval. Uz som napisal 1300 riadkov v package(cursors, podmienky, cykly...) ale s tymto trivialnym reportom si neviem pomoct Do zajtra to musim odovzdat.
Posledné oživenie urobil F3RY dňa 24.05.2014 20:04
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
|