Você está na página 1de 4

Tutorial SQL

Seu guia prático para execução de


consultas – Parte final
Reinaldo Viana
Prezado Leitor, nesta última parte do tutorial SQL, estudaremos consultas envolvendo
funções de agregação, além da elaboração de subconsultas.

Tenha uma ótima leitura!

Exemplo 01: Listar a quantidade de clientes.


Resposta:

SELECT COUNT(*)
FROM CLIENTE

Comentário: o comando count serve para contabilizar o número de linhas de uma


consulta. No exemplo, count(*) retornou o número de linhas da tabela CLIENTE que,
nesse contexto, representa o número de clientes.

Exemplo 02: Listar a quantidade de clientes do sexo feminino.


Resposta:

SELECT COUNT(*)
FROM CLIENTE
WHERE sexo=’feminino’

Comentário: trata-se de uma solução semelhante à do exemplo 1. Apenas foi


adicionada a cláusula WHERE com um filtro que recupera as linhas correspondentes às
pessoas do sexo feminino (sexo=’feminino’).

Exemplo 03: Obter a média de salário dos clientes.


Resposta:

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.

Nota 1. Renomeando campos em consultas


É possível renomear virtualmente qualquer coluna resultante de uma consulta. Este
procedimento é útil para deixar o código mais organizado e coerente. Dessa forma,
é possível reescrever a solução do Exemplo 03 da seguinte maneira:

SELECT AVG(salario) as MediaSalarial


FROM CLIENTE

Exemplo 04: Obter a média salarial por sexo.


Resposta:

SELECT sexo, AVG(salario) as MediaSalarialSexo


FROM CLIENTE
GROUP BY sexo

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.

Exemplo 05: Mostrar, em uma linha, a quantidade de clientes do sexo masculino e a


quantidade de clientes do sexo feminino.
Resposta:

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: neste caso, o SGBD primeiramente recupera os códigos dos clientes da


tabela FONE (SELECT código FROM FONE). Este resultado serve como parâmetro de
entrada para a consulta principal, que recupera apenas os clientes sem telefone
(clientes cujo código não aparece na subconsulta).
Exemplo 07: Obter o nome e o salário dos clientes que ganham mais que a média
salarial masculina.

SELECT nome, salario


FROM CLIENTE
WHERE salario >
(SELECT avg(salario)
FROM CLIENTE
WHERE SEXO=’MASCULINO’)

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.

Exemplo 08: Listar o(s) cliente(s) que ganha(m) o maior salário.


Resposta:

SELECT nome
FROM CLIENTE
WHERE salario =
(SELECT max(salario)
FROM CLIENTE)

Comentário: neste caso, o SGBD calcula o maior salário através da utilização do


operador max na subconsulta (SELECT max(salário) from CLIENTE). Este resultado é
comparado com o salário de cada cliente, sendo exibidos apenas os que ganham o
correspondente ao maior salário.

Exemplo 09: Verificar quantos clientes ganha(m) mais que o(s) cliente(s) de menor
salário.
Resposta:

SELECT count(*) as QteCliente


FROM CLIENTE
WHERE salario >
(SELECT min(salario)
FROM CLIENTE)

Comentário: aqui, a subconsulta recupera o menor salário da tabela CLIENTE. Este


salário serve como parâmetro de comparação para a consulta principal, que contabiliza
o número de clientes que ganham mais que este salário.

Exemplo 10: Listar o nome e o sexo do cliente mais novo.


Resposta:

SELECT nome, sexo


FROM CLIENTE
WHERE nascimento =
(SELECT max(nascimento)
FROM CLIENTE)

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).

Exemplo 11: Listar o nome do cliente mais velho.


Resposta:

SELECT nome, sexo


FROM CLIENTE
WHERE nascimento =
(SELECT min(nascimento)
FROM CLIENTE)

Comentário: de forma semelhante ao exemplo 10, a subconsulta recupera a data de


nascimento mais antiga. Neste caso, o cliente que tiver nascido nesta data, é o que
aparecerá no resultado (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.

Espero ter contribuído para seu aprendizado!

Você também pode gostar