Bonjour,

Sur une base de tests je fais le SELECT suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SQL> select employee_id, salary, department_id, sum(salary) over (partition by department_id) TOTAL from employees order by 3
EMPLOYEE_ID     SALARY DEPARTMENT_ID      TOTAL
----------- ---------- ------------- ----------
        200      35200            10      35200
        201     104000            20     152000
        202      48000            20     152000
        114      88000            30     199200
        115      24800            30     199200
        116      23200            30     199200
        117      22400            30     199200
        118      20800            30     199200
        119      20000            30     199200
        203      52000            40      52000
        120      64000            50    2125600
...
Ce que je voudrais maintenant c'est obtenir le pourcentage du salaire de chaque employé par rapport à son département.
Je fais le SELECT suivant avec un alias mais ça plante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
select employee_id, salary, department_id, sum(salary) over (partition by department_id) TOTAL,  (salary/TOTAL)*100 from employees order by 3;
ERROR at line 1:
ORA-00904: "TOTAL": invalid identifier
La requête marche avec duplication du calcul de la somme mais c'est moche comme code et je pense que le calcul du total par département est alors effectué deux fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
select employee_id, salary, department_id, sum(salary) over (partition by department_id) TOTAL,  (salary/sum(salary) over (partition by department_id))*100 from employees order by 3;
Si vous pouviez m'expliquer le comment du pourquoi de ce problème... par avance merci.