[ Psyche @ 01.08.2006. 12:43 ] @
Pronasla sam neke smernice kako izracunati medijanu iz niza podataka i ono izgleda ovako: Code: $sql0 = mysql_query (" CREATE TEMPORARY TABLE tmp_table ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, value VARCHAR( 99 ) NOT NULL ); "); $sql1 = mysql_query (" CREATE TEMPORARY TABLE tmp_table ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, value VARCHAR(99) NOT NULL ); "); $sql2 = mysql_query (" INSERT INTO tmp_table ( value ) SELECT value FROM table ORDER BY 1; "); $sql3 = mysql_query (" SELECT @count := COUNT( * ) FROM tmp_table; "); $mdn = mysql_query (" SELECT DISTINCT AVG( value ) AS medijana FROM tmp_table WHERE id IN (FLOOR((@count+1)/2), CEIL((@count+1)/2)); "); $sql4 = mysql_query (" DROP TEMPORARY TABLE tmp_table; "); Kod je funkcionalan i dobijam bas ono sto zelim, ali me interesuje da li je moguce isto ovo napisati nekako kompaktnije. Takodje, ovu vrednost cu morati da racunam cak cetiri puta i ispisujem na istoj stranici u okviru cetiri tabelice: za sve grupe, za prvu, drugu i trecu. Trenutno pravim 4 kompletna seta ovih upita s tim sto u poslednja tri dodajem uslov tipa: SELECT value FROM table WHERE grupa=1 ORDER BY 1; itd. Da li mozete da mi predlozite neko bolje resenje od ovog? Hvala! |