Agrupamento e combinação de elementos com SQL
Extraído do site : www.criarweb.com
Aprendemos a agrupar elementos e a combinar filas selecionadas com SQL para Oracle.
Agrupamento de elementos. Group by e Having:
Para saber qual é o salário médio de cada departamento da tabela Jogadores seria:
SELECT TIME_NO, AVG (SALARIO) "SALARIO MEDIO"
FROM JOGADORES
GROUP BY DEPT_NO;
A sentença "Select" possibilita agrupar um ou mais conjuntos de filas. O agrupamento se realiza mediante a cláusula "GROUP BY" pelas comunas especificadas e na ordem especificada. Formato:
SELECT…
FROM…
GROUP BY COLUNA1, COLUNA2, COLUNAN…
HAVING CONDICAO
GROUP BY …
Os dados selecionados na sentença "Select" que leva o "Group By" devem ser:
- Uma constante.
- Uma função de grupo (SUM, COUNT, AVG…)
- Uma coluna expressa no Group By.
A cláusula Having se emprega para controlar qual dos conjuntos de filas se visualiza. Avalia-se sobre a tabela que devolve o Group By. Não pode existir sem Group By.
Having é parecido ao Where, porém trabalha com grupos de filas; pergunta por uma característica de grupo, ou seja, pergunta pelos resultados das funções de grupo, o qual Where não pode fazer.
Combinação externa (outer joins):
Permite-nos selecionar algumas filas de uma tabela embora estas não tenham correspondência com as filas da outra tabela com a que se combina. Formato:
SELECT TABELA1.COLUNA1, TABELA1.COLUNA2, TABELA2.COLUNA1, TABELA2.COLUNA2
FROM TABELA1, TABELA2
WHERE TABELA1.COLUNA1 = TABELA2.COLUNA1 (+);
Isto seleciona todas as filas da tabela "tabela1" embora não tenham correspondência com as filas da tabela "tabela2", se utiliza o símbolo +.
O resto de colunas da tabela "tabela2" se preenche com NULL.
Union, intersec e minus:
Permite combinar os resultados de vários "Select" para obter um único resultado. Formato:
SELECT… FROM… WHERE…
OPERADOR_DE_CONJUNTO
SELECT…FROM…WHERE…
UNION= Combina os resultados de duas consultas. As filas duplicadas que aparecem se reduzem a uma fila única.
UNION ALL= Como a anterior, porém aparecerão nomes duplicados.
INTERSEC= Devolve as filas que são iguais em ambas consultas. Todas as filas duplicadas serão eliminadas.
MINUS= Devolve aquelas filas que estão na primeira "Select" e não estão na segunda "Select". As filas duplicadas do primeiro conjunto se reduzirão a uma fila única antes que comece a comparação com o outro conjunto.
Regras para a utilização de operadores de conjunto:
- As colunas das duas consultas se relacionam em ordem, da esquerda à direita.
- Os nomes de coluna da primeira sentença "Select" não tem porque ser os mesmos que os nomes da segunda.
- Os "Select" necessitam ter o mesmo número de colunas.
- Os tipos de dados devem coincidir, embora a longitude não tem que ser a mesma.