Pular para o conteúdo principal

05 - Consultas avançadas

Nesta aula, aprenderemos sobre consultas SQL mais avançadas, utilizando os comandos WHERE, ORDER BY, HAVING, GROUP BY e algumas funções mais utilizadas para manipulação de dados e agrupamentos.


Utilizando o WHERE para filtragem de dados

O comando WHERE é utilizado para filtrar registros de acordo com uma condição especificada.

Exemplo: Buscar todos os clientes da cidade de "São Paulo".

SELECT 
*
FROM CLIENTES
WHERE
CIDADE = 'São Paulo';

Operadores comuns no WHERE

Operador    Descrição        Exemplo                                    
=          Igual            SELECT * FROM CLIENTES WHERE IDADE = 30;
!= ou <>Diferente        SELECT * FROM CLIENTES WHERE IDADE != 30;
>          Maior que        SELECT * FROM CLIENTES WHERE IDADE > 30;
<          Menor que        SELECT * FROM CLIENTES WHERE IDADE < 30;
>=        Maior ou igual aSELECT * FROM CLIENTES WHERE IDADE >= 30;
<=        Menor ou igual aSELECT * FROM CLIENTES WHERE IDADE <= 30;
BETWEENDentro de um intervaloSELECT * FROM CLIENTES WHERE IDADE BETWEEN 15 AND 18;
INVerifica se o valor está dentro de um conjuntoSELECT * FROM CLIENTES WHERE IDADE IN (15, 16, 17, 18);
LIKEBusca uma palavra contida em textos, onde "%" representa qualquer coisaSELECT * FROM CLIENTES WHERE NOME LIKE '%FE%'

Ordenando resultados com ORDER BY

O ORDER BY é utilizado para ordenar os resultados da consulta.

  • ASC (padrão) ordena de forma crescente.
  • DESC ordena de forma decrescente.

Exemplo: Ordenar os clientes por nome em ordem alfabética.

SELECT 
*
FROM CLIENTES
ORDER BY
NOME ASC;

Exemplo: Listar livros ordenados pelo maior preço primeiro.

SELECT 
*
FROM LIVROS
ORDER BY
PRECO DESC;

Agrupando dados com GROUP BY

O GROUP BY é utilizado para agrupar registros com base em um ou mais campos, geralmente combinado com funções de agregação.

Exemplo: Contar quantos empréstimos cada cliente fez.

SELECT 
ID_CLIENTE,
COUNT(*) AS "QTD_EMPRESTIMOS"
FROM EMPRESTIMOS
GROUP BY
ID_CLIENTE;

Filtrando grupos com HAVING

Diferente do WHERE, que filtra registros individuais, o HAVING é usado para filtrar grupos de dados após a aplicação do GROUP BY.

Exemplo: Exibir apenas clientes que tenham feito mais de 5 empréstimos.

SELECT 
ID_CLIENTE,
COUNT(*) AS "QTD_EMPRESTIMOS"
FROM EMPRESTIMOS
GROUP BY
ID_CLIENTE
HAVING
COUNT(*) > 5;

Funções mais utilizadas

Abaixo irei citar as funções mais comuns do SQL Server, mas sinta-se a vontade para procurar por outras funções na internet. Minha recomendação é o site da W3 Schools.

Funções de agregação

FunçãoDescriçãoExemplo
COUNT(*)Conta o número de registrosSELECT COUNT(*) AS "QTD_LIVROS" FROM LIVROS;
SUM(campo)Soma os valores de um campoSELECT SUM(PRECO) AS "VL_TOTAL_LIVROS" FROM LIVROS;
AVG(campo)Calcula a média dos valores de um campoSELECT AVG(PRECO) AS "MEDIA_PRECO_LIVROS" FROM LIVROS;
MAX(campo)Retorna o maior valorSELECT MIN(PRECO) AS "MENOR_PRECO" FROM LIVROS;
MIN(campo)Retorna o menor valorSELECT MAX(PRECO) AS "MAIOR_PRECO" FROM LIVROS;

Funções de manipulação de texto

FunçãoDescriçãoExemplo
UPPER(campo)Converte o texto para maiúsculoSELECT UPPER(NOME) AS "NOME" FROM CLIENTES;
LOWER(campo)Converte o texto para minúsculoSELECT LOWER(NOME) AS "NOME" FROM CLIENTES;
LEN(campo)Retorna o tamanho do textoSELECT LEN(NOME) AS "QTD_LETRAS_NOME" FROM CLIENTES;
SUBSTRING(campo, inicio, tamanho)Retorna parte do textoSELECT SUBSTRING(NOME, 1, 3) AS "PRIMEIRAS_TRES_LETRAS_NOME" FROM CLIENTES;

Conclusão

Nesta aula, aprendemos:

  • Como utilizar WHERE para filtrar registros.
  • Como ordenar os resultados com ORDER BY.
  • Como agrupar registros usando GROUP BY.
  • Como filtrar grupos de dados com HAVING.
  • As principais funções SQL utilizadas para agregação e manipulação de texto.