Autor | Zpráva | ||
---|---|---|---|
Giga Profil |
#1 · Zasláno: 5. 8. 2022, 18:45:25
Zdar pánové,
Prosím o radu jak přistoupit přimo k n-tému řádku výsledku dotazu na tabulku. Nehledám n-tý řádek tabulky. Naopak, hledám medián - neboli hodnotu uprostřed řady výsledků. Na tabulku učiním dotaz který vrátí dopředu neznámý počet řádků výsledků. Výsledkem je např. 15 řádků seřazených podle nějakého kritéria a já potřebuji zjistit obsah prostředního - tedy 8 řádku. Děkuji. |
||
Kajman Profil |
Máte k dispozici analytické (window) funkce?
Např. funguje dotaz SELECT Row_number() OVER() rownumer FROM dual |
||
Giga Profil |
#3 · Zasláno: 5. 8. 2022, 19:19:32
Kajman:
„Máte k dispozici analytické (window) funkce?“ copak já vím :D píšu si více méně pro radost prográmek v PHP. V php můžu cyklem vyčítat řádky až po hledaný prostřední řádek výsldeku MySQL dotazu. Ale mám pocit, že by to mělo jít i jinak. |
||
juriad Profil |
#4 · Zasláno: 5. 8. 2022, 19:50:39
Jakou verzi MySQL (nebo snad MariaDB) používáš?
SELECT VERSION(); Dostatečně nová verze MariaDB přímo obsahuje funkci median, ve starších a v MySQL se dá snadno nahradit pomocí row_number, a v ještě starších se musí používat proměnné. |
||
Giga Profil |
#5 · Zasláno: 6. 8. 2022, 06:57:17
Verze SQL je už asi historická 5.5.62
|
||
Kajman Profil |
#6 · Zasláno: 6. 8. 2022, 09:25:28
U prehistorické verze můžete použít dva dotazy. Jeden, co spočítá počet řádků a druhý, který nastaví offset na polovinu řádků bez jedné.
Nebo si pomoci v tom php - tam nemusíte cyklem procházet všechny řádky. Zeptáte se kolik řádků to vrátilo a skočíte rovnou na prostřední. |
||
Giga Profil |
#7 · Zasláno: 6. 8. 2022, 20:59:20
Díky, Kajmane!
Toho skoku jsem nebyl sto se dopátrat. |
||
Časová prodleva: 3 roky
|
0