Comment calculer le médian en SQL

Calcul de la médiane d'un ensemble est plus difficile que le simple calcul de la moyenne ou moyenne d'un ensemble. Ajouter dans la syntaxe et de la complexité de SQL et la tâche peut sembler insurmontable au premier abord. Mais avec quelques concepts simples et quelques exemples, le calcul de la valeur médiane est pas de sueur. Cette façon de faire pour utilisera Transact-SQL pour ses exemples.

Choses que vous devez

  • Une base de données capable d'exécuter Transact-SQL (Microsoft SQL Server, Sybase SQL Anywhere, etc.)

Trouver la médiane

  1. Comprendre la différence entre la médiane et la moyenne d'un ensemble. La médiane est le "valeur du milieu" d'un ensemble, alors que la moyenne est la moyenne de tous les éléments d'un ensemble. Par exemple, étant donné un ensemble ordonné de nombres {1, 2, 6, 9, 10, 11}, la médiane sera de 7,5 ([6 + 9] / 2), mais la moyenne est de 6,5 ([1 + 2 + 6 + 9 + 10 + 11] / 6).

    Pour calculer la médiane, compter le nombre d'éléments dans l'ensemble. Si le nombre est pair, prendre la moyenne de l'élément à la position d'être trouvé par le comptage des éléments totaux et en divisant par deux et la position trouvée en divisant le nombre total d'éléments par 2 et en ajoutant une. Si le nombre est impair, prendre l'élément à la position marquée par le nombre total divisé par deux et arrondi à l'entier le plus proche.

  2. Créer un ensemble ordonné de nombres avec un nouvel indice intégrante. Par exemple, si les données numériques sont stockées dans la "num" de la colonne "données" table, créer une nouvelle table temporaire contenant le "num" la valeur avec un nouvel indice:




    CREATE TABLE #values ​​(
    ID int NON IDENTITÉ NULL (1,1),
    num numérique (9,4)
    )

    INSERT INTO #values ​​(num)
    Num SELECT
    À partir de données
    ORDER BY num

    L'instruction ORDER BY est très important pour le calcul de la médiane.

  3. Sélectionnez les données de la table temporaire où l'ID est égal à la moitié du nombre d'enregistrements de la table. Si il ya un nombre impair de dossiers, prendre la moyenne des deux valeurs que la médiane finale. Ceci peut être accompli dans la demande de recherche unique ci-dessous:




    SELECT MOYENNE (num)
    DE #values ​​v
    INSCRIPTION (
    SELECT COUNT (*) AS cnt
    DE #values ​​_v
    ) C ON (
    c.ID = PLAFOND (_v.cnt / 2.0)
    ET (

    _v.cnt% 2 = 1 - cnt est impair
    OU (
    _v.cnt% 2 = 0 - CNT est même
    ET c.ID = (_v.cnt / 2.0) + 1
    )

    )
    )

    Cette requête utilise une sous-requête pour trouver le nombre d'enregistrements de sorte que la valeur moyenne peut être déterminée. Dans les deux cas d'un même compter un nombre impair et, l'utilisation de plafond pour arrondir (_v.cnt / 2.0) est exacte. (Par exemple, Même: 6/2 = 3- Odd: 7/2 = 3,5, qui est arrondi à 4) En outre, lorsque le nombre est pair, ajouter 1 à (_v.cnt / 2.0) pour obtenir le deuxième élément à inclure dans la médiane finale.

Conseils & Avertissements

  • Si vous utilisez une version récente de Microsoft SQL Server, tels que 2005 ou 2008, vous pouvez utiliser "Expressions de table communes" au lieu de créer une table temporaire. Selon la configuration de votre schéma et le serveur, ce qui peut fournir une augmentation des performances.
» » » » Comment calculer le médian en SQL