Como calcular a mediana em sql

Calcular a mediana em SQL

Calculando a média de um conjunto é mais desafiador do que simplesmente calcular a média ou média de um conjunto. Adicionar na sintaxe e da complexidade do SQL ea tarefa pode parecer insuperáveis ​​em primeiro lugar. Mas com alguns conceitos simples e alguns exemplos, o cálculo do valor médio é nenhum suor. Este how-to irá usar Transact-SQL para os seus exemplos.

Coisas que você precisa

  • Um banco de dados capaz de executar Transact-SQL (Microsoft SQL Server, Sybase SQL Anywhere, etc.)

Encontrar a mediana

  • Entenda a diferença entre a mediana ea média de um conjunto. A mediana é o "valor médio" de um conjunto, enquanto que a média é a média de todos os elementos de um conjunto. Por exemplo, dado um conjunto ordenado de números {1, 2, 6, 9, 10, 11}, a mediana será de 7,5 ([6 + 9] / 2), mas a média é de 6,5 ([1 + 2 + 6 + 9 + 10 + 11] / 6).

    Para o cálculo da média, contar o número de elementos do conjunto. Se a contagem é ainda, tomar a média do elemento na posição para ser encontrado pela contagem dos elementos totais e dividindo por dois e a posição encontrada dividindo o número total de elementos por 2 e adicionando uma. Se a contagem for ímpar, tomar o elemento na posição marcada pela contagem total dividido por dois e arredondado para o número inteiro mais próximo.

  • Criar um conjunto ordenado de números com um novo índice integral. Por exemplo, se os dados numéricos é armazenado no "num" coluna do "dados" tabela, crie uma nova tabela temporária que contém o "num" valor, com um novo índice:

    CRIAR #values ​​mesa (
    ID int não a identidade NULL (1,1),
    Num numérico (9,4)
    )

    INSERT INTO #values ​​(num)
    Num SELECIONAR
    A partir de dados
    ORDER BY num



    A instrução ORDER BY é muito importante para o cálculo da mediana.

  • Selecione os dados da tabela temporária onde o ID é igual a metade da contagem de registros na tabela. Se houver um número ímpar de registros, tomar a média dos dois valores como a média final. Isto pode ser conseguido na única consulta abaixo:

    SELECIONAR AVERAGE (num)
    DE #values ​​v
    JUNTE-SE (
    SELECT COUNT (*) AS cnt
    DE #values ​​_v
    ) C ON (
    c.ID = TETO (_v.cnt / 2.0)
    E (

    _v.cnt% 2 = 1 - cnt é estranho
    OU (
    _v.cnt% 2 = 0 - cnt é ainda
    E c.ID = (_v.cnt / 2.0) + 1
    )

    )
    )

    Esta consulta usa uma subconsulta para encontrar a contagem de registros para que o valor médio pode ser determinado. Em ambos os casos de um mesmo contar e uma contagem de estranho, o uso de teto para arredondar para cima (_v.cnt / 2.0) é preciso. (Por exemplo, Even: 6/2 = 3 Odd: 02/07 = 3,5, que é arredondado para 4) Além disso, quando a contagem é ainda, adicionar 1 a (_v.cnt / 2.0) para obter o segundo elemento a incluir na mediana final.

dicas & avisos

  • Se você estiver usando uma versão recente do Microsoft SQL Server, tais como 2005 ou 2008, você pode usar "Expressões de tabela comuns" em vez de criar uma tabela temporária. Dependendo da configuração do esquema e do servidor, isso pode fornecer um aumento no desempenho.
De esta maneira? Compartilhar em redes sociais:

LiveInternet