Fonctions agrégées
Toutes les fonctions agrégées peuvent être utilisées comme des fonctions de Window, en ajoutant une clause OVER
.
Supposons que nous ayons une table EMPLOYEE
avec les colonnes ID
, NAME
et SALARY
. Nous avons besoin de montrer pour chaque employé, son salaire correspondant et le pourcentage de la masse salariale.
Une simple requête permet de résoudre ce problème comme suit :
select
id,
department,
salary,
salary / (select sum(salary) from employee) percentage
from employee
order by id;
id department salary percentage -- ---------- ------ ---------- 1 R & D 10.00 0.2040 2 SALES 12.00 0.2448 3 SALES 8.00 0.1632 4 R & D 9.00 0.1836 5 R & D 10.00 0.2040
La requête est répétitive et peut prendre beaucoup de temps, surtout si EMPLOYEE est une représentation complexe.
Cette requête peut être réécrite sous une forme plus rapide et plus élégante en utilisant les fonctions de la Window :
select
id,
department,
salary,
salary / sum(salary) OVER () percentage
from employee
order by id;
Ici, sum(salaire) OVER ()
calcule la somme de tous les salaires de la requête (table des employés).