Sobes.tech
Middle — Senior

Comment calculer la médiane en SQL sans fonction intégrée ? Comment compter le nombre de lignes dans une table ? Connaissez-vous les fonctions de fenêtrage ?

sobes.tech IA

Réponse de l'IA

La médiane en SQL sans fonction intégrée peut être calculée en utilisant des fonctions de fenêtre ou des sous-requêtes. Par exemple, pour une table avec une colonne numérique 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);

Ici :

  • ROW_NUMBER() numérote les lignes par ordre croissant de valeur.
  • COUNT(*) OVER () compte le nombre total de lignes.
  • On prend la moyenne des deux éléments centraux (pour un nombre pair) ou un seul (pour un nombre impair).

Compter le nombre de lignes dans la table est très simple :

SELECT COUNT(*) FROM your_table;

Fonctions de fenêtre sont des fonctions qui effectuent des calculs sur un ensemble de lignes liées à la ligne courante, sans réduire le résultat à une seule ligne (contrairement aux fonctions agrégées). Elles sont utiles pour le classement, le calcul de sommes mobiles, la médiane, etc.

Exemple de fonction de fenêtre :

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

Elle numérotera les lignes par ordre croissant de value.