Escolar Documentos
Profissional Documentos
Cultura Documentos
Ia2 Tutorial SQL III
Ia2 Tutorial SQL III
SELECT COUNT(*)
FROM CLIENTE
SELECT COUNT(*)
FROM CLIENTE
WHERE sexo=’feminino’
SELECT AVG(salario)
FROM CLIENTE
Comentário: esta é uma solução simples. Bastou a utilização da função que calcula a
média (avg) a partir de um conjunto de valores (neste caso, o campo salário da tabela
CLIENTE). Uma alternativa pode ser vista na Nota 1.
Comentário: esta solução é semelhante à do exemplo 10. Aqui, foi adicionado o campo
(sexo) na cláusula GROUP BY para que o resultado fosse calculado para o sexo
masculino e para o feminino.
SELECT
(SELECT COUNT(*) FROM CLIENTES WHERE sexo=’masculino’) AS
QtdeHomens,
(SELECT COUNT(*) FROM CLIENTES WHERE sexo=’feminino’) AS QtdeMulheres
Comentário: o interessante desta solução é que podemos exibir resultados, dos mais
simples aos mais complexos, em uma única linha. Para isso, basta declarar um SELECT
principal separando, em seguida, por vírgula, cada subconsulta que gera determinada
informação.
Praticando subconsultas
No dia-a-dia, os desenvolvedores codificam consultas que não dependem diretamente
de alguma tabela, mas do resultado de uma ou de diversas consultas. Este
procedimento é comumente chamado de subconsulta. Na prática, o SGBD realiza a
subconsulta e o resultado serve como parâmetro de entrada para a consulta principal.
Observe os exemplos de 06 a 07.
Exemplo 06: Obter o nome dos clientes que não possuem telefone.
Note que para sabermos o nome dos clientes sem telefone, é necessário termos
certeza de que não existe ocorrência do código do cliente na tabela FONE. Em
situações desse tipo, pode-se utilizar o operador (not) in. Observe:
SELECT nome
FROM CLIENTE
WHERE codigo not in
(SELECT codigo
FROM FONE)
Comentário: aqui, o SGBD primeiramente calcula a média salarial dos clientes do sexo
masculino (subconsulta). O resultado é comparado com o salário de cada cliente,
sendo retornadas apenas as informações dos que ganham mais que a média salarial
masculina.
SELECT nome
FROM CLIENTE
WHERE salario =
(SELECT max(salario)
FROM CLIENTE)
Exemplo 09: Verificar quantos clientes ganha(m) mais que o(s) cliente(s) de menor
salário.
Resposta:
Comentário: observe que neste caso a subconsulta recupera a maior (mais recente)
data de nascimento, dentre as cadastradas na tabela CLIENTE. Este resultado serve
como parâmetro de entrada para a consulta principal, que retorna o cliente mais novo
(podendo ser mais de um cliente).
Conclusões
Estudamos neste tutorial os componentes da estrutura utilizada pelos SGBD para o
armazenamento dos dados (tabela). Aprendemos que as tabelas são relacionadas
através do mecanismo conhecido por chave estrangeira. Vimos também uma sintaxe
SQL para consulta aos dados armazenados em um banco de dados, consolidando o
aprendizado através de diversos exemplos.