Tem um otimo documento sobre funções analíticas:
https://glufke.net/oracle/download/funco ... TICAS.html
Qual a diferença de uma sumarização utilizando a função analítica ROW_NUMBER e o GROUP BY?
Com ROW_NUMBER é possivel numerar as linhas por um grupo, veja: (a ultima coluna SEQ é gerada pelo ROW_NUMBER). Com GROUP BY você consegue fazer somatórios ou médias de um grupo específico. (totalmente outro objetivo)
Selecionar tudo
SELECT ename "Ename", deptno "Deptno", sal "Sal",
SUM(sal)
OVER (ORDER BY deptno, ename) "Running Total",
SUM(SAL)
OVER (PARTITION BY deptno
ORDER BY ename) "Dept Total",
ROW_NUMBER()
OVER (PARTITION BY deptno
ORDER BY ENAME) "Seq"
FROM emp
ORDER BY deptno, ename
/
Ename Deptno Sal Running Total Dept Total Seq
------ ------ ------ ------------- ---------- ----
CLARK 10 2450 2450 2450 1
KING 5000 7450 7450 2
MILLER 1300 8750 8750 3
ADAMS 20 1100 9850 1100 1
FORD 3000 12850 4100 2
JONES 2975 15825 7075 3
SCOTT 3000 18825 10075 4
SMITH 800 19625 10875 5
ALLEN 30 1600 21225 1600 1
BLAKE 2850 24075 4450 2
JAMES 950 25025 5400 3
MARTIN 1250 26275 6650 4
TURNER 1500 27775 8150 5
WARD 1250 29025 9400 6
Alguém sabe me dizer qual é a praticidade da utilização da função LAG? Ou seja, em quais situações posso utilizá-las?
LAG é super util. Com ele você consegue pegar informações digamos "da linha anterior".
Veja esse exemplo:
Selecionar tudo
SELECT ename,hiredate,sal,
LAG(sal, 1, 0)
OVER (ORDER BY hiredate) AS PrevSal
FROM emp
WHERE job = 'CLERK';
Ename Hired SAL PREVSAL
------ --------- ----- -------
SMITH 17-DEC-80 800 0
JAMES 03-DEC-81 950 800
MILLER 23-JAN-82 1300 950
ADAMS 12-JAN-83 1100 1300
Qual o efeito do HINT "APPEND" em uma instrução DML de INSERT?
O append faz com que as novas linhas do INSERT sejam incluídas em novos blocos, ou seja, ele não re-utiliza os espaços em branco de algum possivel bloco solto. Por isso que é mais rápido, pois ele utiliza blocos sequencias e novos. A desvantagem é que a tabela vai CRESCER. Então, tem casos que isso não é problema, pois no fim das contas, a informação será TRUNCADA... Mas pra outros casos, tem que se avaliar bem a sua utilização.
Sobre suas duvidas nas questões de JOIN, MERGE, etc acho que a melhor forma é você nos enviar um exemplo de tabela com o que você espera conseguir. OU até mesmo os inserts pra gente poder simular aqui e testar os exemplos!