Imaginemos a seguinte query:
1. Select deptno, ename, job, sal
2. from EMP
3. order by deptno, ename;
O resultado seria:
Agora precisamos encontrar o menor salário e o maior salário de cada departamento, mas listando todos os empregados. Para isso podermos fazer assim:
1. Select deptno, ename, job, sal,
2. Min(sal) over (partition by deptno) as MENOR,
3. Max(sal) over (partition by deptno) as MAIOR
4. From EMP
5. Order by deptno, ename;
Separei em cores para visualizarmos melhor. A função min e max que normalmente utilizamos com group by foi utilizada com a opção OVER, caracterizando-a como uma função analítica.
No nosso exemplo, as funções MIN e MAX estão sendo executadas apenas sobre os registros de cada departamento. Consigo isso criando uma partição lógica (window) através do OVER (PARTITION BY deptno).
No nosso exemplo, as funções MIN e MAX estão sendo executadas apenas sobre os registros de cada departamento. Consigo isso criando uma partição lógica (window) através do OVER (PARTITION BY deptno).
Abraços e até a próxima
Nenhum comentário:
Postar um comentário