Vamos a Pergunta!
Levando em consideração que as duas querys abaixo, retornam o mesmo valor, a primeira roda no Postgres, MySQL e SQL Server e a segunda no Oracle.
Qual o valor de retorno delas? (Não vale colar! Responda sem executar a query!)
--No Postgres, MySQL, SQL Server
SELECT sum(x.a)
FROM
(
SELECT 10 AS a
UNION
SELECT 10 AS a
) x
;
--No Oracle
SELECT sum(x.a)
FROM
(
SELECT 10 AS a FROM dual
UNION
SELECT 10 AS a FROM dual
) x
;
Opções:
a)20
b)40
c)10
d)0
e)NULL
Resposta: Letra c = 10, já que o UNION simples faz um DISTINCT antes, para o somatório ficar igual a opção a = 20, isto é somar mesmo sendo com linhas iguais, seria necessário substituir UNION por UNION ALL.
ResponderExcluir