Dans cet article : http://sqlpro.developpez.com/optimisation/mediane/, je parle de différentes méthodes de calculs de la médiane. En voici une nouvelle que j’ai formulée…
Je n’ai pas encore testé la rapidité d’exécution de cette nouvelle formulation, mais je vous la livre directement :
SELECT SUM(VAL)
FROM (SELECT AVG(STT_VALEUR) AS VAL
FROM (SELECT *
FROM T_STATISTIQUES_STT STT
WHERE ABS((SELECT COUNT(*)
FROM T_STATISTIQUES_STT SOU
WHERE SOU.STT_VALEUR < STT.STT_VALEUR) -
(SELECT COUNT(*)
FROM T_STATISTIQUES_STT SUR
WHERE SUR.STT_VALEUR > STT.STT_VALEUR)) <= 1) AS T
UNION ALL
SELECT STT_VALEUR
FROM (SELECT STT_VALEUR, COUNT(*) NVALS,
(SELECT COUNT(*)
FROM T_STATISTIQUES_STT) AS NOMBRE
FROM T_STATISTIQUES_STT AS STT
INNER JOIN (SELECT MAX(STT_VALEUR) AS VALS
FROM T_STATISTIQUES_STT
UNION ALL
SELECT MIN(STT_VALEUR) AS VALS
FROM T_STATISTIQUES_STT) AS T
ON STT.STT_VALEUR = T.VALS
GROUP BY STT_VALEUR) AS TT
WHERE NVALS >= NOMBRE / 2) AS TTT
—
Frédéric BROUARD, Spécialiste modélisation, bases de données, optimisation, langage SQL.
Le site sur le langage SQL et les S.G.B.D. relationnels : http://sqlpro.developpez.com/
Expert SQL Server http://www.sqlspot.com : audit, optimisation, tuning, formation
* * * * * Enseignant au CNAM PACA et à l’ISEN à Toulon * * * * *