Sobes.tech
Middle — Senior

Como calcular a mediana em SQL sem uma função incorporada? Como contar o número de linhas numa tabela? Conhece as funções de janela?

sobes.tech IA

Resposta da IA

Mediana em SQL sem função incorporada pode ser calculada usando funções de janela ou subconsultas. Por exemplo, para uma tabela com uma coluna numérica value:

SELECT AVG(value) AS median FROM (
  SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn, COUNT(*) OVER () AS cnt
  FROM your_table
) sub
WHERE rn IN ((cnt + 1) / 2, (cnt + 2) / 2);

Aqui:

  • ROW_NUMBER() numera as linhas em ordem crescente de valor.
  • COUNT(*) OVER () conta o número total de linhas.
  • São considerados os valores médios dos dois elementos centrais (para quantidade par) ou um elemento central (para quantidade ímpar).

Contar o número de linhas na tabela é muito simples:

SELECT COUNT(*) FROM your_table;

Funções de janela são funções que realizam cálculos sobre um conjunto de linhas relacionadas à linha atual, sem reduzir o resultado a uma única linha (ao contrário das funções agregadas). São úteis para classificação, cálculo de somas móveis, medianas, etc.

Exemplo de função de janela:

SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rn FROM your_table;

Ela numerará as linhas em ordem crescente de value.