automatiser une fonction "Calcul de médiane"

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : automatiser une fonction "Calcul de médiane"

Re: automatiser une fonction "Calcul de médiane"

par sirakawa » 12 août 2013, 19:04

Ce n'est pas la même chose; c'est une fonction qui crée la requête semblable à la tienne d'origine mais utilisanbt des variables au lieu de constantes.
tu appellles ta fonction per:
$res = mediane();// comme indiqué
et tu exploites $res suivant sa nature.
Je n'ai rien vérifié, mais ça devrait fonctionner

Re: automatiser une fonction "Calcul de médiane"

par Khidam » 12 août 2013, 15:07

Merci sirakawa

Je vais essayer ça.
Il faut donc que je déclare cette fonction au début de ma page.
Mais comment ensuite l'introduire dans une requête SELECT ? comme pour un MIN ou MAX.

Si par exemple je l'appelle
function MED($id_site, $parametre, $table)

est ce que ça va marcher comme ça ?

$requete = "SELECT MED(CODE_MODALITE, INDICE_REL, FLORE_AG) as medfl1, MIN(INDICE_REL) as minfl1, MAX(INDICE_REL) as maxfl1, AVG(INDICE_REL) as moyfl1 FROM FLORE_AG INNER JOIN SITE ON FLORE_AG.CODE_MODALITE = SITE.CODE_MODALITE";

Re: automatiser une fonction "Calcul de médiane"

par sirakawa » 12 août 2013, 13:21

En créant ta propre fonction dont voici une esquisse:
//$id_site est ton ID_SITE, $table_1 est ton SET, $^table_2 est ton ESCAPE_SET
function mediane($id_site, $table_1, $table_2)
{
SELECT SET Median FROM
(SELECT a1.$id_site, a1.$table_1, COUNT(a1.table_1) Rank
FROM $table_1 a1, $table_2 a2
WHERE a1.$table_1 < a2.$table_1 OR (a1.$table_1 = a2.SET AND a1.ID_SITE <= a2.ID_SITE)
group by a1.ID_SITE, a1.SET
order by a1.SET DESC) a3
WHERE Rank = (SELECT (COUNT(*)+1) DIV 2 FROM $table_2);
//affectation du résultat à $res
return $res;
}
$mes = mediane ("monsite", "ma_table", "ta_table");
On doit pouvoir simplifier le where, car mysql connaît <=

automatiser une fonction "Calcul de médiane"

par Khidam » 12 août 2013, 12:50

Bonjour

J'ai une bdd avec plusieurs tables de ce type :
ID_SITE / PARAMETRE
où ID_SITE est l'identifiant d'un site
et PARAMETRE une valeur numérique associée (nombreux enregistrements)

Je sais calculer une médiane, par exemple, pour la table ESC_SET dont le champ PARAMETRE s'appelle SET, cela me donne :


SELECT SET Median FROM
(SELECT a1.ID_SITE, a1.SET, COUNT(a1.SET) Rank
FROM ESC_SET a1, ESC_SET a2
WHERE a1.SET < a2.SET OR (a1.SET = a2.SET AND a1.ID_SITE <= a2.ID_SITE)
group by a1.ID_SITE, a1.SET
order by a1.SET DESC) a3
WHERE Rank = (SELECT (COUNT(*)+1) DIV 2 FROM ESC_SET);

Est-il possible d'automatiser cette fonction en php, afin de pouvoir l'appeler dans une requête comme c'est possible pour MIN, MAX ou AVG ?
Pour le faire pour ESC_SET avec SET mais aussi pour n'importe quelle autre table avec son paramètre spécifique !!
Merci d'avance !!