Tutorial SQL - Seu guia prático para execução de consultas – Parte III

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (8)  (0)

Veja nesta última parte do tutorial SQL: consultas envolvendo funções de agregação e elaboração de subconsultas.

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!

Leia também

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?