Agrupamento e combinação de elementos com SQL

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 Group By serve para calcular propriedades de um ou mais conjuntos de filas. Se se seleciona mais de um conjunto de filas, Group By controla que as filas da tabela original sejam agrupadas em um temporário.

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.

Fonte: http://www.criarweb.com/artigos/768.php

Deixe um comentário