Meilleure Façon De Calculer Une Médiane Dans Access 2007 Lors De L'Utilisation De Group By
J'ai une table qui contient un livre et ensuite plusieurs prix sur le livre (ce qui est un très simplifié de l'échantillon):
ID PRIX DU LIVRE 1 CLASSEUR1 10 2 CLASSEUR1 15 3 CLASSEUR1 12 4 LIVRE2 8 5 LIVRE2 2
Je suis facilement le calcul de la moyenne, mais il doit y avoir une belle façon de calculer la médiane?
SQL en cours:
SELECT DISTINCTROW Books.BOOK, Avg(Books.PRICE) AS [Avg Of PRICE]
FROM Books
GROUP BY Books.BOOK;
Résultats:
LIVRE Avg De PRIX CLASSEUR1 12.3333333333333 BOOK2 5
OriginalL'auteur NoahD | 2009-03-12
Vous devez vous connecter pour publier un commentaire.
Il n'est pas revenu Médian en Jet SQL, sauf s'il a été ajouté en 2007, mais voici une idée de comment faire pour l'obtenir. Vous aurez besoin ...
Certains SQL ...
Et d'une Fonction Définie par l'Utilisateur (UDF).
À partir de: LessThanDot Wiki
OriginalL'auteur Fionnuala
Médiane peut être calculé dans MS Access en utilisant simplement des requêtes régulières et sans VBA. La médiane est le 50e percentile. Donc, créer des requêtes sélection normalement; ensuite, allez dans la vue de SQL et de les inclure "Top 50 pour Cent" après le mot-clé choisi. Trier par ordre croissant de bas de 50 pour cent; trier par ordre décroissant pour les top 50 pour cent. Ensuite, trouver le maximum de fond pour cent ensemble de résultats et moins haut % jeu de résultats. La moyenne de ces deux est la médiane. Lors de l'utilisation de "Top 50 pour Cent", assurez-vous que les critères de la requête est spécifique pour l'ensemble des résultats à partir de laquelle la médiane sera calculée.
Un couple de tests semblent indiquer que, au moins dans la plupart des cas, il n'round up. Cela dit, il est toujours très lent sur de grands ensembles de données...
OriginalL'auteur Alan
Il n'est pas construit en fonction, donc vous devez utiliser le code d'une boucle sur les enregistrements et calc la médiane de vous-même.
Utilisation google - il y a beaucoup d'exemples de code là
OriginalL'auteur DJ.
J'ai essayé d'utiliser la non-VBA méthodes et ils sont tous un peu limité et de ne pas être en mesure de vous donner le résultat le plus précis pour un plus grand ensemble de données. Pour le Top 50 pour Cent de l'Asc (Max) et le Top 50 pour Cent Desc (Min) de la méthode, l'Accès est limité et qu'il omet des valeurs à un seul moment de la commande dans l'ordre croissant. Pour l'arrondi, l'Accès est à l'aide de banquiers arrondi de sorte qu'il n'est pas toujours arrondi vers le haut en fonction de la valeur elle-même, vous devez ajouter une fuite en valeur de +-0.00001 si vous voulez arrondir vers le haut ou vers le bas. J'ai aussi essayé un autre Rang()la méthode sans VBA et Access est la difficulté de classement des valeurs qui a au moins une paire de valeurs identiques. Pour les raisons ci-dessus, je vous suggère de rester à la création de personnaliser la fonction en VBA.
OriginalL'auteur Red Sole Survivor