Autor Zpráva
Giga
Profil
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
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
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
Verze SQL je už asi historická 5.5.62
Kajman
Profil
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
Díky, Kajmane!

Toho skoku jsem nebyl sto se dopátrat.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0