Autor | Zpráva | ||
---|---|---|---|
JardaB Profil |
#1 · Zasláno: 25. 1. 2024, 19:25:47
Zdravím,
potřeboval bych poradit s následujícím dotazem. Zjednodušeně mám dvě tabulky. Tabulka klient, sloupece id, name Tabulka vysledky, sloupce id, id_klient, hodnota Potřebuji výpis každého klienta se sumou 5-ti nejvyšších hodnot. Je nutné k tomuto případu použít korelovaného poddotazu pro nalezení hranice? Dlouho jsem se v tom nepohyboval a prakticky potřebuji napsat jen tento dotaz, tedy si jdu pro radu sem. |
||
Kajman Profil |
Máte už konečně databázi s podporou window funkcí? Pro otestování můžete zkusit dotaz
select row_number() over() as rn from dual select row_number() over() as rn from dual Pokud stále bez window funkcí, je možné např. sečít pět poddotazů s limit 1 a různým offsetem 0-4 ošetřených pro součet náhradou null hodnoty za 0. |
||
Časová prodleva: 3 dny
|
|||
JardaB Profil |
#3 · Zasláno: 29. 1. 2024, 08:39:58
Kajman:
Ano, vypadá to, že mám podporu window funkcí. |
||
Kajman Profil |
Tak to půjde něco jako
1SELECT x.id_klient, SELECT x.id_klient,
Sum(x.hodnota) top5
FROM (SELECT v.id_klient,
v.hodnota,
Row_number()
OVER(
partition BY id_klient
ORDER BY v.hodnota DESC) poradi
FROM vysledky v) x
WHERE x.poradi <= 5
GROUP BY x.id_klient |
||
JardaB Profil |
#5 · Zasláno: 30. 1. 2024, 19:46:59
Kajman:
Úžasné, vyzkouším zítra a dám vědět. Děkuji za ochotu. |
||
JardaB Profil |
#6 · Zasláno: 1. 2. 2024, 10:52:53
Frspoken:
Ano v ostrém provozu se to jeví, že jede po přepsání na můj příklad. Ale na localhost nemám podporu window funkcí a nevím jak je rozjet. Mám nainstlalovné easyphp devserver, mysql ver. 5.7.17. |
||
anonym_ Profil * |
#7 · Zasláno: 1. 2. 2024, 11:29:43
JardaB:
Obecně bych ti doporučil mít na lokále i na ostrém serveru stejné nastavení. Vlastně moc nevím, jak tímhle způsobem můžeš cokoliv rozumně vyvíjet. Njejednoduší bude na localhost nainstalovat stejnou verzi DB, jakou máš na serveru. Jestli máš problém s tímto konkrétním krokem, ptej se konkrétně. |
||
JardaB Profil |
#8 · Zasláno: 1. 2. 2024, 11:57:45
anonym:
Ano to dává smysl, nicméně již nic aktivně nevyvíjím. Na požadavek starého klienta dělám jistou jednorázovou úpravu, proto se mi zdálo zbytečné instalovat přesně totéž co má klient na serveru. |
||
anonym_ Profil * |
#9 · Zasláno: 1. 2. 2024, 16:24:01
OK, tak v tom případě to trochu chápu, i když vlastně nechápu... :-) Vyvíjet na ostrém serveru mi nepřijde OK ani v případě minoritní úpravy u letitého klienta, ale lidsky chápu, že nechceš ztrácet čas přípravou localhostu, přenášením verzí projektu (v Gitu pravděpodobně nebude), atd.
|
||
Časová prodleva: 1 rok
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0