Je ne peux qu'imaginer faire cela avec deux requêtes de base de données. Le premier trouve le nombre de lignes dans la base de données, et le second sélectionne avec un ORDER BY
sur la colonne qui m'intéresse et LIMIT X, 1
où X est la moitié du nombre de lignes.
Existe-t-il un moyen simple de le faire avec une seule requête?
Actuellement, j'utilise des moyennes dans mes calculs, mais je pense que la moyenne serait meilleure; il n'y a pas de limite supérieure aux valeurs et elles sont limitées par le bas par 0.
EDIT: oui, je voulais dire «médiane», mais je rencontrais une erreur cérébrale et j'ai recherché «moyenne». J'ai maintenant trouvé la réponse sur stackoverflow
meta
pour un peu, il semble qu'il y ait une division quant à la météo, cette question devrait être ici ou à SO. Je reconnais que ce n'est peut-être pas une requête de niveau ninja , mais cela me laisse perplexe et il n'y a pas de DBA dans l'entreprise pour laquelle je travaille (6 personnes au total).Réponses:
Il y a pas mal de discussions ici sur le calcul des valeurs médianes à partir d'une table MySQL. Recherchez simplement la page «médiane».
En passant, il me semble négligent qu'il n'y ait pas de fonction intégrée pour le faire. La médiane est souvent plus descriptive de la tendance centrale que la moyenne. Access / VBA a le même trou dans sa liste de fonctions.
la source
Je n'ai vu aucune solution nulle part qui parvienne à obtenir la médiane en une seule requête. Cela ne me dérange pas les tables temporaires, mais si elles ne sont pas nécessaires, tant mieux! Voici ce que j'ai trouvé:
J'ai testé cela pour un ensemble pair et j'ai obtenu la bonne réponse. brand_prof n'est que deux colonnes: brand_name et profit, une valeur décimale. S'il s'agissait de valeurs entières, vous devrez peut-être lancer "plafond ((CAST COUNT (*) AS DECIMAL) ..." Plus que ce que j'ai testé. L'idée cool d'utiliser un produit cartésien et de relier la somme des signes était pas le mien. J'ai malheureusement oublié l'auteur.
la source